java

位置:IT落伍者 >> java >> 浏览文章

socket 线程 思路 java


发布日期:2019年12月21日
 
socket 线程 思路 java

网上参考别人的例子改自己的程序终于搞明白了原来在socket的服务器端设置线程并不是像之前想的那样建立一个连接后就重新开一个端口去监听这样的想法遇到了很多问题首先当我把客户端弄成for循环递增的链接个格端口的时候发现总是异常因为服务器端的新的端口建立速度总是没有客户端的主动连接块然后试图去让客户端创建新端口链接的速度降慢但是一直没调试成功并且即便是成功了这个问题还是有隐患的因为客户端的链接速度是不可控的有两天这个问题没有进展后来在网上查到了原来服务器端的线程并不是用来创建新的端口的之前也想过一个服务器端不可能就连接一个客户端但是没想出来解决办法看了例子的提示后才做出来服务器端的线程是用来监听连接客户端的当监听到客户端的连接请求时就会主动去创建一个socket线程去连接完成客户端和服务器端的交互后客户端自动断开链接

核心代码

Main 函数

ServerSocket serverSocket=null

boolean listening=true

try{

serverSocket=new ServerSocket(

//创建一个ServerSocket在端口监听客户请求

}catch(IOException e) {}

while(listening){ //永远循环监听

newServerThread(serverSocketaccept()clientnum)start()

//监听到客户请求根据得到的Socket对象和

客户计数创建服务线程并启动之

clientnum++ //增加客户计数

}

serverSocketclose() //关闭ServerSocket

设计ServerThread类

public class ServerThread extends Thread{

Socket socket=null //保存与本线程相关的Socket对象

int clientnum //保存本进程的客户计数

public ServerThread(Socket socketint num) { //构造函数

thissocket=socket //初始化socket变量

clientnum=num+ //初始化clientnum变量

}

public void run() { //线程主体

try{//在这里实现数据的接受和发送

}

上一篇:Java网络编程从入门到精通(15):为什么要使用SocketAddress来管理网络地址

下一篇:Java Applet编程之声音和图像的协调