社区
网络编程
帖子详情
一个服务器多个客户端的问题。
BlackRain007
2005-07-28 06:04:28
我编了一个TCP程序,当运行一个客户端的时候工作正确,如果同时再连入一个客户端就会出现发送数据出错的情况,我用的是最基本的方法,没有用什么重叠Io之类的,服务器端每次接收一个连接后就创建一个线程来和客户端通信,我的问题是最基本的方法能否处理服务器端一次连接多个客户端的情况?
各位大虾指点下.
...全文
150
7
打赏
收藏
一个服务器多个客户端的问题。
我编了一个TCP程序,当运行一个客户端的时候工作正确,如果同时再连入一个客户端就会出现发送数据出错的情况,我用的是最基本的方法,没有用什么重叠Io之类的,服务器端每次接收一个连接后就创建一个线程来和客户端通信,我的问题是最基本的方法能否处理服务器端一次连接多个客户端的情况? 各位大虾指点下.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pp_hotel
2005-07-29
打赏
举报
回复
我的办法是在服务端将accept所得socket保存在一个socket *数组列表中
在一个独立线程中遍历该数组与客户端交互
lishan2002
2005-07-29
打赏
举报
回复
应该可以的,可能有点复杂
不过,既然你想做服务器端连接多个客户端,为什么不采用一个简单IO模型呢!
BlackRain007
2005-07-29
打赏
举报
回复
我的问题是:最基本的方法(不使用重叠IO等套接字IO模型)能否处理服务器端一次连接多个客户端的情况???如果能,有没有要注意的地方?
就这个问题没有大虾回答吗?
UDX协议
2005-07-28
打赏
举报
回复
CSocket.
BlackRain007
2005-07-28
打赏
举报
回复
我的问题是:最基本的方法(不使用重叠IO等套接字IO模型)能否处理服务器端一次连接多个客户端的情况???如果能,有没有要注意的地方?
服务器端部分代码:
int iport=DEFAULT_PORT;
HANDLE hThread;
DWORD dwThreadID;
int addrlenClient;
CTcpServerDlg* pthis=(CTcpServerDlg *)pParam;
//初始化 加载Winsock库
WSADATA wsad;
if(WSAStartup(MAKEWORD(2,2),&wsad)!=0){
AfxMessageBox("初始化winsock遇到错误");
return 0;
}
//绑定
pthis->sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(pthis->sServer==SOCKET_ERROR){
errmsg.Format("socket() failed: %s",ErrorMessage(WSAGetLastError()));
AfxMessageBox(errmsg);
return 0;
}
struct sockaddr_in addrLocal;
addrLocal.sin_family=AF_INET;
addrLocal.sin_port=htons(iport);
addrLocal.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
if(bind(pthis->sServer,(SOCKADDR *)&addrLocal,sizeof(addrLocal))==SOCKET_ERROR){
errmsg.Format("bind() failed: %s",ErrorMessage(WSAGetLastError()));
AfxMessageBox(errmsg);
return 0;
}
//监听
listen(pthis->sServer,4);
// 接受连接
addrlenClient=sizeof(pthis->addrClient);
while (WaitForSingleObject(g_stop,0)!=WAIT_OBJECT_0) {
pthis->sClient=accept(pthis->sServer,(sockaddr *)(&(pthis->addrClient)),&addrlenClient);
if(pthis->sClient==INVALID_SOCKET){
errmsg.Format("accept() failed: %s",ErrorMessage(WSAGetLastError()));
AfxMessageBox(errmsg);
return 0;
}
hThread=CreateThread(NULL,0,ClientThread,(LPVOID)pthis,0,&dwThreadID);
创建完线程后,就在ClientThread线程中进行通信.
nelsonc
2005-07-28
打赏
举报
回复
应该是你代码的问题。
healer_kx
2005-07-28
打赏
举报
回复
没有看到你的代码,实在没有啥办法判断。
Socket聊天程序(
一个
服务端,
多个
客户端
)
Socket聊天程序(
一个
服务端,
多个
客户端
) 可通过设置IP地址,进行局域网聊天,互联网聊天。。详细配置可以看下我blog的文章。 blog中搜索:Socket聊天程序
网络通信——1对多,
一个
服务器
对应
多个
客户端
下面给出一对多,
一个
服务器
多个
客户端
的收发消息关系图。下图表示,创建了三个与
客户端
对话的Communication层,每个
客户端
分别与各自对应的线程通话,从而实现一对多通信 ...
TCP 多线程——
一个
服务器
被
多个
客户端
连接
为了使
一个
服务器
端能被
多个
客户端
连接我们采用线程的方法,
服务器
创建
一个
线程之后,打开的套接字就被线程所继承,线程可以和连接的客户进行通信,而主线程(主
服务器
)可以继续接受以后的客户连接,即Accept之后...
python套接字(二):实现
一个
服务器
和多
客户端
连接
在上一篇博客python套接字(一):socket的使用简单说明了一下套接字的使用,也实现了使用套接字来传输消息,但是也有
一个
问题
,就是这种实现方式只能
一个
服务器
连接
一个
客户端
,意味着有几个个客户就要创建结果
服务器
...
Socket通信实现
一个
服务器
端接收
多个
客户端
的数据
服务器
端每接收一次Socket管道,就分配
一个
独立的线程来处理
客户端
发送的数据,便能实现
一个
服务器
端接收
多个
客户端
的数据。
客户端
开发流程: 1.创建
客户端
Socket对象,输入
服务器
的IP和端口号,请求连接
服务器
端; ...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章