社区
网络编程
帖子详情
一个服务器多个客户端的问题。
BlackRain007
2005-07-28 06:04:28
我编了一个TCP程序,当运行一个客户端的时候工作正确,如果同时再连入一个客户端就会出现发送数据出错的情况,我用的是最基本的方法,没有用什么重叠Io之类的,服务器端每次接收一个连接后就创建一个线程来和客户端通信,我的问题是最基本的方法能否处理服务器端一次连接多个客户端的情况?
各位大虾指点下.
...全文
177
7
打赏
收藏
一个服务器多个客户端的问题。
我编了一个TCP程序,当运行一个客户端的时候工作正确,如果同时再连入一个客户端就会出现发送数据出错的情况,我用的是最基本的方法,没有用什么重叠Io之类的,服务器端每次接收一个连接后就创建一个线程来和客户端通信,我的问题是最基本的方法能否处理服务器端一次连接多个客户端的情况? 各位大虾指点下.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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聊天程序是
一个
基于C#编程语言实现的网络通信应用,它允许
一个
服务端与
多个
客户端
进行实时交互。在本文中,我们将深入探讨Socket编程的基本概念、C#中的Socket类、
服务器
端与
客户端
的设计以及如何实现多用户...
C# socket编程游戏(1
服务器
,多
客户端
)
在本文中,我们将深入探讨如何使用C#进行Socket编程,特别是在构建
一个
简单的游戏环境中,涉及到
一个
服务器
和
多个
客户端
的交互。Socket编程是网络通信的基础,它允许程序通过网络发送和接收数据。C#语言提供了丰富的...
android的XMPP
客户端
要创建XMPP
客户端
,首先需要集成
一个
XMPP库。Smack是
一个
流行的Java库,它为Android提供了丰富的XMPP支持。Smack库包含连接管理、会话建立、消息发送和接收等功能,大大简化了开发过程。在集成Smack库时,确保下载...
svn
客户端
64位下载 中文
TortoiseSVN是
一个
流行的SVN
客户端
,尤其受到Windows用户的欢迎,因为它提供了
一个
直观的图形用户界面。在这个场景下,我们有两个压缩包文件: 1. TortoiseSVN-1.7.13.24257-x64-svn-1.7.10.msi:这是TortoiseSVN的...
Android仿新浪微博
客户端
源代码
在Android平台上,开发一款仿新浪微博
客户端
是一项挑战性的任务,它涉及到
多个
关键的技术点,包括UI设计、网络请求、数据解析、缓存策略、用户登录授权、动态加载与刷新、社交功能实现等。以下是对这个项目中涉及的...
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章