社区
Java SE
帖子详情
如何用socket与多线程实现在服务器端并发处理多客户端的请求?
hxhazx
2013-11-14 06:11:25
本人对socket不是很熟,
现在的需求是:
客户端能够登录到服务器上去对数据进行增删改查及退出一系列操作;但多个客户端可以同进登录,如果它们并发操作,那么服务器端是不是应该用多线程,给每个客户分一个独立的线程,但不知道在服务器端应该怎么写代码实现各个线程之间的独立!
一个客户端一旦连上,只要它不退出,这个线程不应该结束!
...全文
926
2
打赏
收藏
如何用socket与多线程实现在服务器端并发处理多客户端的请求?
本人对socket不是很熟, 现在的需求是: 客户端能够登录到服务器上去对数据进行增删改查及退出一系列操作;但多个客户端可以同进登录,如果它们并发操作,那么服务器端是不是应该用多线程,给每个客户分一个独立的线程,但不知道在服务器端应该怎么写代码实现各个线程之间的独立! 一个客户端一旦连上,只要它不退出,这个线程不应该结束!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hxhazx
2013-11-19
打赏
举报
回复
我现在自己整出了一个解决的办法,比较粗陋,莫见笑: 主线程中用一个ServerSocket的accept()方法来对所有客户端发来的请求进行全部接收; 从接收得到的socket中读取客户ip地址信息,以此ip为依据判断之前该客户端是否已建立了与服务器的连接,如果之前还未建立,那么就在服务器端重开一个线程,并将此socket传入,线程中拿到这个socket之后在其内部进行相应的处理,该线程随后会被存入一个Map中,其以ip地址为键,线程对象为值; 下次如果此客户端再发来请求,就可以在此Map中直接找到处理它的线程来对其进行处理; 线程中在需要等待客户端信息才能继续的地方,暂时用wait来令其等待,当主线程又接到此客户端的一个请求信息之后,再将该线程唤醒(Notify); 当客户端断开连接时(服务器端会收到一个标记量),服务器端的线程运行结束,并将Map中的对应项移除。
develop_design_level
2013-11-14
打赏
举报
回复
给你个地址,去看看吧。
http://kanpiaoxue.iteye.com/admin/blogs/1956800
可以在这个基础上面修改一下。 推荐你使用netty来写你的服务器端,它的性能非常优秀。 然后你还是看看《Java网络编程》这本书吧。
基于
并发
模型的
Socket
类
服务器端
采用
并发
模型,
服务器端
每收到一个来自
客户端
的连接,便开一个线程
处理
新产连接
请求
。
并发
模型简单易用,适用于端
客户端
并发
连接不多的应用。
Socket
编程-Linux.zip
服务器端
采用
多线程
并发
模式,服务器可以同时接收多个
客户端
的
请求
,并且回复
客户端
相同的信息。编译时应该使用命令“gcc server.c -o server -lpthread ”和“gcc client.c -o client -lpthread”
C++ 百万
并发
网络通信引擎架构与
实现
(
Socket
、全栈、跨平台) Version 1.0
本课程由刘远东、张立铜两位工程师将两人在企业多年积累的开发经验结合而成。从基础的网络知识开始由浅入深地讲解如何使用C++
实现
一套支持百万级别
并发
的网络通信引擎。包含:高频
并发
、
多线程
、多进程、线程池、内存池、软件硬件瓶颈、如何测试优化网络
处理
能力等技术知识。可以应用在Windows、Linux、Android、IOS系统上。对从事高性能网络
处理
的前后端开发人员有极大帮助。咨询群:648738912
select、poll、epoll、
多线程
实现
并发
请求
处理
select、poll、epoll、
多线程
实现
并发
请求
处理
这里写目录标题select、poll、epoll、
多线程
实现
并发
请求
处理
**解决方法1:**
多线程
**采用IO多路复用
实现
并发
处理
客户端
请求
****解决方法2:select**解决方法3:**poll**解决方法4:**epoll****select、poll、epoll的选择** 服务器与
客户端
建立连接需要使用到一些接口,包括但不限于
socket
、bind、listen、accept 一个简单的服务器网络程序如下: int listenfd,
C++
SOCKET
多线程
网络编程
实现
多个
客户端
与服务器通信
C++
SOCKET
多线程
网络编程
实现
多个
客户端
与服务器通信 #设计思路 通过在
服务器端
建立两个线程,主线程用来监听
客户端
的接入,当有新的
客户端
接入时,服务器为新的
客户端
建立服务线程,通过服务线程来
实现
服务器与
客户端
的通信。 #结果演示
服务器端
代码: #include"stdafx.h" #include <cstdio> #include<iostream> #include<string> #include<WinSock2.h> #pragma co
Java SE
62,616
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章