服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java基础 三步学会java socket编程(二)

第二步 多个客户同时连接

在实际的网络环境里,同一时间只对一个用户服务是不可行的。一个优秀的网络服务程序除了能处理用户的输入信息,还必须能够同时响应多个客户端的连接请求。在java中,实现以上功能特点是非常容易的。

设计原理:

主程序监听一端口,等待客户接入;同时构造一个线程类,准备接管会话。当一个socket会话产生后,将这个会话交给线程处理,然后主程序继续监听。运用thread类或runnable接口来实现是不错的办法。

{实现消息共享}

import java.io.*;
import java.net.*;

public class server extends serversocket
{
private static final int server_port = 10000;

public server() throws ioexception
{
super(server_port);

try
{
while (true)
{
socket socket = accept();
new createserverthread(socket);
}
}
catch (ioexception e)
{}
finally
{
close();
}
}
//--- createserverthread
class createserverthread extends thread
{
private socket client;
private bufferedreader in;
private printwriter out;

public createserverthread(socket s) throws ioexception
{
client = s;

in = new bufferedreader(new inputstreamreader(client.getinputstream(), "gb2312"));
out = new printwriter(client.getoutputstream(), true);
out.println("--- welcome ---");
start();
}

public void run()
{
try
{
string line = in.readline();

while (!line.equals("bye"))
{
string msg = createmessage(line);
out.println(msg);
line = in.readline();
}
out.println("--- see you, bye! ---");
client.close();
}
catch (ioexception e)
{}
}

private string createmessage(string line)
{
xxxxxxxxx;
}
}

public static void main(string[] args) throws ioexception
{
new server();
}
}

这个程序监听10000端口,并将接入交给createserverthread线程运行。createserverthread线程接受输入,并将输入回应客户,直到客户输入"bye",线程结束。我们可以在createmessage方法中,对输入进行处理,并产生结果,然后把结果返回给客户。

扫描关注微信公众号