关于Java网络编程问题
Server端
import java.net.*;
import java.io.*;
public class TestServer extends Thread{
private ServerSocket serverSocket;
public TestServer(int port) throws IOException {
serverSocket = new ServerSocket(port);
serverSocket.setSoTimeout(10000);
}
public void run()
{
while(true)
{
try
{
System.out.println("等待远程连接,端口号为:" + serverSocket.getLocalPort() + "...");
Socket server = serverSocket.accept();
System.out.println("远程主机地址:" + server.getRemoteSocketAddress());
DataInputStream in = new DataInputStream(server.getInputStream());
System.out.println(in.readUTF());
DataOutputStream out = new DataOutputStream(server.getOutputStream());
out.writeUTF("谢谢连接我:" + server.getLocalSocketAddress() + "\nGoodbye!");
server.close();
}catch(SocketTimeoutException s)
{
System.out.println("Socket timed out!");
break;
}catch(IOException e)
{
e.printStackTrace();
break;
}
}
}
public static void main(String[] args) {
int port = Integer.parseInt("6066");
try {
Thread thread = new TestServer(port); //class继承了Thread类
thread.run();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Client端
import java.net.*;
import java.io.*;
public class TestClient {
public static void main(String[] args) {
String serverName = "localhost";
int port = Integer.parseInt("6066");
try
{
System.out.println("连接到主机:" + serverName + " ,端口号:" + port);
Socket client = new Socket(serverName, port);
System.out.println("远程主机地址:" + client.getRemoteSocketAddress());
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
out.writeUTF("Hello from " + client.getLocalSocketAddress());
InputStream inFromServer = client.getInputStream();
DataInputStream in = new DataInputStream(inFromServer);
System.out.println("服务器响应: " + in.readUTF());
client.close();
}catch(IOException e)
{
e.printStackTrace();
}
}
}

正在回答
测试你的代码没问题呀。

最后发现是因为,服务端程序运行速度太快,两边都来不及反应,进行断电或者阻塞就好了
这么运行的话,我还是不行,而且远程主机端口怎么随机变的?
我想问下,您是先启动的Client端的程序吗,我的会报错
然后我还是不太懂先启动一方之后为什么另一方会有响应,他们之间是怎么越过程序建立联系的?虽然端口号相同,但是另一方的程序并没有被编译呀
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星