[英]java.net.SocketException: permission denied is arising
我试图运行一个代码来使用Java swing库创建一个GUI来将消息发送到本地服务器.GUI包含一个文本字段来键入消息以及一个按钮来将其发送到服务器。服务器代码包含在另一个类中。
当我尝试运行代码时,控制台中的套接字异常显示为:
java.net.SocketException:权限被拒绝:在java.net.DualStackPlainSocketImpl.java:79处在java.net.DualStackPlainSocketImpl.connect0(本机方法)处进行连接345)在java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)在java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
请帮助我获得与服务器的连接。
我在这里随附了GUI和服务器的代码。
创建GUI和建立与服务器的连接的类:
package org.myorg;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.*;
import java.*io.IOException;
import java.io.PrintWriter;
import java.net.*;
import org.myorg.MessageServer;
public class SendMessage {
PrintWriter writer;
Socket sock;
JTextField text;
/*Creates GUI and adds SendButtonListener object to the button.
Calls setUpNetworking() method*/
public void go(){
JFrame frame=new JFrame();
JPanel panel=new JPanel();
text=new JTextField("Message",15);
JButton button=new JButton("Send");
button.setSize(5,5);
button.addActionListener(new SendButtonListener());
panel.add(text);
panel.add(button);
frame.getContentPane().add(BorderLayout.CENTER,panel);
frame.setSize(300,200);
frame.setVisible(true);
setUpNetworking();
}
/*Listens to action event of clicking the 'send' button.
The message from the text field is written to writer object for sending it
to server*/
class SendButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try{
writer.println(text.getText());
writer.flush();
}catch(Exception ex){
ex.printStackTrace();
}
text.setText("message");
text.requestFocusInWindow();
}
}
/*Establishes socket connection to the server. Object of PrintWriter is
created*/
private void setUpNetworking(){
try {
sock=new Socket("127.0.0.1",50000);
writer=new PrintWriter(sock.getOutputStream());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*Main method*/
public static void main(String[] args) {
SendMessage sendMessage=new SendMessage();
MessageServer server=new MessageServer();
sendMessage.go();
server.go();
}
}
服务器类
package org.myorg;
import java.io.*;
import java.net.*;
public class MessageServer {
Socket sock;
/*Accepts the socket connection and calls the read() method*/
public void go(){
try{
@SuppressWarnings("resource")
ServerSocket socket=new ServerSocket(50000);
sock=socket.accept();
read(sock);
}catch(IOException e){
e.printStackTrace();
}
}
/*Reads the message using InputStreamReader*/
public void read(Socket sock){
InputStreamReader stream;
try {
stream = new InputStreamReader(sock.getInputStream());
BufferedReader reader=new BufferedReader(stream);
System.out.println(reader.readLine());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
首先,您必须运行服务器,
public class MessageServer {
Socket sock;
/*Accepts the socket connection and calls the read() method*/
public void go() {
try {
@SuppressWarnings("resource")
ServerSocket socket = new ServerSocket(50000);
sock = socket.accept();
read(sock);
} catch (IOException e) {
e.printStackTrace();
}
}
/*Reads the message using InputStreamReader*/
public void read(Socket sock) {
InputStreamReader stream;
try {
stream = new InputStreamReader(sock.getInputStream());
BufferedReader reader = new BufferedReader(stream);
System.out.println(reader.readLine());
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
public static void main(String[] args) {
MessageServer server = new MessageServer();
server.go();
}}
然后运行客户端“ SendMessage.java”
public static void main(String[] args) throws IOException {
SendMessage sendMessage=new SendMessage();
// MessageServer server=new MessageServer();
sendMessage.go();
// server.go();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.