黑马程序员-TCP协议服务端ServerScoket接收客户端并发请求。
2012-05-07 21:19
351 查看
---------------------- android培训、java培训、期待与您交流! ----------------------
ServerScoket service = new SercerSocket(端口);
while(true){
Socket s = ss.sccept();
inputStream in = s.getInputStream();
FileOutputStream os = new FileOutputStrem("conten.txt");
byte[] but = new byte[1024];
int len = 0;
while((len=in.read(but))!=-1){
os.write(but,0,len);
}
os.close();
s.close();
}
使用while循环处理并发有局限性,也就是说,当a客户端连接上以后,被服务端接收到了,服务端执行具体流程时,
这个时候又有b客户连接上服务端,还没有处理完a客户的请求时while循环是不会结束的,
所以不会获取到b客户的ss.sccept()请求的。
---------
想让服务端处理多个客户端的请求,最好将每个客户端封装到单独的线程中。
只要明确客户端要执行的服务端代码即可,这些代码放入run方法中。
//定义线程
class picThread implements Runnable
{
private Socket s;
picThread(Socket s){
this.s=s;
}
public void run(){
try{
InputStream in = s.getInputStream();
FileOutputStream os = new FileOutputStream("conten.txt");
byte[] but = new byte[1024];
int len = 0;
while((len=in.read(but))!=-1){
os.write(but,0,len);
}
os.close();
s.close();
}catch(Exception e){
throw new RuntimeException("失败");
}
}
}
//服务端,循环获取客户端,并循环建立线程
class picServer{
public static void main(String[] args)throws Exception{
ServerSocket service = new ServerSocket(10001);
while(true){
Socket s = service.accept();
new Thread(new picThread(s)).start();
}
}
}
这样,当a客户访问服务端的时候会new一个线程给a客户执行,b客户进来时,又new一个线程给b客户执行
这样就成功实现了客户端并发请求。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima
ServerScoket service = new SercerSocket(端口);
while(true){
Socket s = ss.sccept();
inputStream in = s.getInputStream();
FileOutputStream os = new FileOutputStrem("conten.txt");
byte[] but = new byte[1024];
int len = 0;
while((len=in.read(but))!=-1){
os.write(but,0,len);
}
os.close();
s.close();
}
使用while循环处理并发有局限性,也就是说,当a客户端连接上以后,被服务端接收到了,服务端执行具体流程时,
这个时候又有b客户连接上服务端,还没有处理完a客户的请求时while循环是不会结束的,
所以不会获取到b客户的ss.sccept()请求的。
---------
想让服务端处理多个客户端的请求,最好将每个客户端封装到单独的线程中。
只要明确客户端要执行的服务端代码即可,这些代码放入run方法中。
//定义线程
class picThread implements Runnable
{
private Socket s;
picThread(Socket s){
this.s=s;
}
public void run(){
try{
InputStream in = s.getInputStream();
FileOutputStream os = new FileOutputStream("conten.txt");
byte[] but = new byte[1024];
int len = 0;
while((len=in.read(but))!=-1){
os.write(but,0,len);
}
os.close();
s.close();
}catch(Exception e){
throw new RuntimeException("失败");
}
}
}
//服务端,循环获取客户端,并循环建立线程
class picServer{
public static void main(String[] args)throws Exception{
ServerSocket service = new ServerSocket(10001);
while(true){
Socket s = service.accept();
new Thread(new picThread(s)).start();
}
}
}
这样,当a客户访问服务端的时候会new一个线程给a客户执行,b客户进来时,又new一个线程给b客户执行
这样就成功实现了客户端并发请求。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima
相关文章推荐
- 黑马程序员------TCP协议-客户端&服务端建立通信
- [并发并行]_[线程模型]_[Pthread线程使用模型之三 客户端/服务端模型(Client/Server]
- Server端接收了不一样的请求,在服务端要如何识别并操作呢
- [并发并行]_[线程模型]_[Pthread线程使用模型之三 客户端/服务端模型(Client/Server]
- 黑马程序员--Socket编程并发上传图片,并发登陆,模拟浏览器请求服务端服务
- 客户端劫持,服务端正常接收请求
- windows socket简单使用--实现客户端链接服务端并发送和接收数据
- 黑马程序员--10.网络编程--06.【Clinet_Server通信原理】【TCP_客户端和服务端会话】【阻塞式方法的详解】
- 黑马程序员 TCP协议从客户端传送文件给服务端
- 黑马程序员_Java基础_网络编程_TCP协议编程,客户端服务端程序
- 黑马程序员——使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
- “黑马程序员”使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印
- Scoket服务端客户端的接收和发送
- ext异步请求一个aspx/ashx/web service取得数据,服务端返回一个json.然后客户端接收并显示.
- 黑马程序员--10.网络编程--05.【TCP协议相关类】【InetSocketAddress类】【Socket类】【ServerSocket类】【TCP客户端和服务器端】
- 黑马程序员_Java基础_网络编程_客户端服务端数据传输,交互,客户端请求服务原理,自定义浏览器,URL统一资源定位符
- 黑马程序员_13客户端与服务端互发信息
- 黑马程序员_TCP-客户端并发登录 判断用户名
- APP-FND-00204:并发管理器在运行并发请求xxxxx的派生并发程序 接收事务处理管理器 - RCVOLTM时出错。TM-TIMEOUT.
- WCF----双工模式服务端回调客户端方法时无响应,“发送到 http://***/User.svc 的请求操作在配置的超时内未收到回复”