一个很简单,但又很棘手的关于socket问题 接收到一个连接后就将它丢到线程组里面,由多线程处理请求 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 老兄,结构做成多线程! 以ServerSocket.accept();为开辟线程的判断标志. 每当有client请求后,就在while()循环里开辟一个单独的线程, 然后在循环while() . 如果没有client请求,在,主线程在ServerSocket.accept()处等待! 当然,开辟的这个线程要接收一个参数,那就是clientsocket=new ServerSocket(Port); 以前我做了一个和你类似的服务器程序,不放参考一下! /** * 服务器接收客户端数据的方法,里面是一个无限循环等待被请求的过程 */ public void ServerClient() { try { try{ //创建服务器socket //声明一个字符串变量存储所取出的服务器端口号的字符串形式 String strserverport=null; strserverport=Integer.toString(serverport); //判断从配置文件中读取的服务器端口号是否合法 if(strserverport!=null && strserverport.length()==4){ server = new ServerSocket(serverport); }else{//如果不法,责默认服务器端口号为1234 server=new ServerSocket(1234); }//判断服务器端口号结束 }catch(Exception e){ //如果设置端口号异常,则提示管理员,重启服务器 System.out.println("设置服务器监听端口号有异常"); e.printStackTrace(); }//end 创建服务器socket while(true){ //等待客户的连接请求(程序堵塞直到有客户端请求) Thread.sleep(10); System.out.println("Wait client request ......"); try{ //这里只接受connect的连接请求,所有数据处理的入口 client = server.accept(); //很关键的一步,给接收的客户端Socket设定接收数据流等待时间的属性 client.setSoTimeout(70000); //提示客户端的IP地址 System.out.println("ClientIP=: " +client.getInetAddres().getHostAddress()+" connect request"); //声明一个处理客户端传过来的数据处理线程类的实例 receiveMsgFromClient receiveMsgFromClient=new receiveMsgFromClient(client,operatedb); //启动处理客户端的发送来的数据线程 receiveMsgFromClient.start(); }catch(Exception e){ e.printStackTrace(); } } //end while(true) }catch(Exception e){ e.printStackTrace(); System.out.println("Connect client error! Server must be Restart!!!"); //重新启动服务器 } } //end run() 菜鸟救助老鸟!将下段C#代码翻译成java代码 如何写JAVA程序把SQLServer的数据导入Oracle? 有无此集合? dom4j修改删除xml的问题,在线等 怎样用JLabel来显示图片? 双网卡,如何取本机IP ? java股票系统的一个小问题1,请大家帮忙! 输入值类型判断的问题 请各位牛人回答问题,急急急急急急急急急急!!! 一个关于JAVA 直接调用.js 文件的问题。 求教一个操作问题,100分送一人 JAVA菜鸟求教各位高手关于APPLET的一个问题,多谢了
* 服务器接收客户端数据的方法,里面是一个无限循环等待被请求的过程
*/
public void ServerClient() {
try {
try{
//创建服务器socket
//声明一个字符串变量存储所取出的服务器端口号的字符串形式
String strserverport=null;
strserverport=Integer.toString(serverport);
//判断从配置文件中读取的服务器端口号是否合法
if(strserverport!=null && strserverport.length()==4){
server = new ServerSocket(serverport); }else{//如果不法,责默认服务器端口号为1234 server=new ServerSocket(1234);
}//判断服务器端口号结束
}catch(Exception e){
//如果设置端口号异常,则提示管理员,重启服务器
System.out.println("设置服务器监听端口号有异常");
e.printStackTrace();
}//end 创建服务器socket while(true){
//等待客户的连接请求(程序堵塞直到有客户端请求)
Thread.sleep(10);
System.out.println("Wait client request ......");
try{
//这里只接受connect的连接请求,所有数据处理的入口
client = server.accept(); //很关键的一步,给接收的客户端Socket设定接收数据流等待时间的属性
client.setSoTimeout(70000); //提示客户端的IP地址
System.out.println("ClientIP=: " +client.getInetAddres().getHostAddress()+" connect request");
//声明一个处理客户端传过来的数据处理线程类的实例
receiveMsgFromClient receiveMsgFromClient=new receiveMsgFromClient(client,operatedb);
//启动处理客户端的发送来的数据线程
receiveMsgFromClient.start();
}catch(Exception e){
e.printStackTrace();
}
} //end while(true)
}catch(Exception e){
e.printStackTrace();
System.out.println("Connect client error! Server must be Restart!!!");
//重新启动服务器
}
} //end run()