【发布时间】:2019-01-25 22:02:20
【问题描述】:
我正在设置一个非常简单的服务器,只是为了了解套接字在 java 中是如何工作的。我对应该使用的端口号和 IP 感到困惑;服务器和客户端都在同一台计算机上运行以进行测试。
这是我的代码: 对于服务器 -
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerTest {
public static void main(String[] args) {
try {
ServerSocket socket = new ServerSocket(8585);
Socket clientSocket = socket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine;
while((inputLine = in.readLine())!=null) {
System.out.println("We received:" + inputLine);
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
对于客户:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
public class ClientTest {
public static void main(String[] args) {
try {
Socket sock = new Socket(InetAddress.getByName("myipaddress"), 8585);
PrintWriter out = new PrintWriter(sock.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
out.print("Sent this message");
sock.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
myipaddress 是我的公共 IP 地址
-
到底是什么问题?是否有可以显示的错误声明或者程序的功能是否错误?
-
您已经在使用有效的端口号。您可以使用
"localhost"作为主机名。 -
@KoralpCatalsakal ,我从客户端发送一条消息“发送此消息”,然后在服务器中等待输入然后将其打印出来,但是此消息没有被打印出来,我不知道为什么。我添加了第三个类,它在一个线程上运行服务器,然后在另一个线程上运行客户端
-
你已经建立了连接,为什么还要询问端口号和IP地址?
标签: java sockets server client