java.net.SocketException:出现拒绝权限
我尝试运行一个代码,使用java swing库创建GUI,以向localhost服务器发送消息。GUI包含一个文本字段以键入消息,以及一个按钮以将消息发送到服务器。服务器代码包含在另一个类中 当我尝试运行代码时,控制台中会显示一个套接字异常,如下所示: java.net.SocketException:权限被拒绝:连接在 java.net.DualStackPlainSocketImpl.connect0(本机方法)位于 java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 请帮我连接到服务器 我在这里附上GUI和服务器的代码 用于创建GUI和建立与服务器的连接的类:java.net.SocketException:出现拒绝权限,java,swing,sockets,Java,Swing,Sockets,我尝试运行一个代码,使用java swing库创建GUI,以向localhost服务器发送消息。GUI包含一个文本字段以键入消息,以及一个按钮以将消息发送到服务器。服务器代码包含在另一个类中 当我尝试运行代码时,控制台中会显示一个套接字异常,如下所示: java.net.SocketException:权限被拒绝:连接在 java.net.DualStackPlainSocketImpl.connect0(本机方法)位于 java.net.DualStackPlainSocketImpl.soc
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”
API说,“底层协议中有错误,例如TCP错误。”您可能必须打开端口。这可能有助于缩小搜索范围。可能。请确保发布的代码具有合理且一致的代码块缩进方式。IDE通常有一个设置代码格式的快捷方式。您可以通过单击左侧的来接受这个答案。
public static void main(String[] args) throws IOException {
SendMessage sendMessage=new SendMessage();
// MessageServer server=new MessageServer();
sendMessage.go();
// server.go();
}