socket开发中,服务端能不能继续保持开着? 我在使用java编写socket程序的时候遇到问题:服务端在接受了客户端发送的信息并进行处理之后,就自动关闭了。我希望服务端能够继续开着,处理可能从其它客户端发送来的请求。请问有没有办法做到这点? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ServerSocket server = new ServerSocket(2008);Socket you = null;while(true){ you = server.accept(); if(you != null) // 启动服务线程;} 这样就可以了 这样的socket是同步的,*(即阻塞的),应该有请求时创建一个线程去处理,对性能有影响了,网上有个异步的socket例子,可以看一下拉!可以判断力连接状态,根据状态决定关闭或监听! 以前用Asp.net做过:服务器端创建子线程,然后死循环不断接受客户端连接。我也没有仔细研究过这东西,虽然是C#的代码也把它贴出来吧。private void button1_Click(object sender, System.EventArgs e) { int port=Int32.Parse(textBox2.Text); tcl=new TcpListener(System.Net.IPAddress.Parse(textBox1.Text),port); tcl.Start(); //获得本地主机IP地址 string localhost = (Dns.GetHostByName(Dns.GetHostName())).AddressList[0].ToString(); listBox1.Items.Add("服务器已启动 - "+localhost); //创建子线程,不断接受客户端连接 mainThread=new Thread(new ThreadStart(acceptClient)); mainThread.IsBackground=true; mainThread.Start(); button1.Enabled=false; textBox3.Focus(); } private void acceptClient() { while(true) { Socket socket=tcl.AcceptSocket(); Server server=new Server(socket,this); users.Add(server); } } 用nio包里的看看,是非阻塞的 json字符串问题 struts2 的问题,确实很诡异。 页面跳转问题 多台tomcat的session问题,session丢失 按钮的转换问题!!急饿!! html中合并单元格 如何将JSP变量的值赋给JavaScript的变量??急呀!!!在线等到00:00 路径正确,无法显示图片 新手问题:request session pageContext 都有setAttribute()函数,他们到底有什么区别 在jboss-3.0.3中怎样部署和测试ejb(分不多了,请见谅) 急需解决的问题HTTP Status 500 applet的路径问题,搞不定啊,帮忙啊
Socket you = null;
while(true)
{
you = server.accept();
if(you != null)
// 启动服务线程;
} 这样就可以了
我也没有仔细研究过这东西,虽然是C#的代码也把它贴出来吧。private void button1_Click(object sender, System.EventArgs e)
{
int port=Int32.Parse(textBox2.Text);
tcl=new TcpListener(System.Net.IPAddress.Parse(textBox1.Text),port);
tcl.Start(); //获得本地主机IP地址
string localhost = (Dns.GetHostByName(Dns.GetHostName())).AddressList[0].ToString();
listBox1.Items.Add("服务器已启动 - "+localhost); //创建子线程,不断接受客户端连接
mainThread=new Thread(new ThreadStart(acceptClient));
mainThread.IsBackground=true;
mainThread.Start(); button1.Enabled=false;
textBox3.Focus();
} private void acceptClient()
{
while(true)
{
Socket socket=tcl.AcceptSocket();
Server server=new Server(socket,this);
users.Add(server);
}
}