Socket通信 多个客户端实时通信问题

dubuxunmei 2009-06-22 02:03:09
需求:
1.N个客户端,一个服务端
2.客户端向服无端发送数据,并且接受服无端响应的信息,显示到画面上

疑问:
服务端是不是只需要建立一个监听?
客户段一旦与服务端建立起连接,其他的客户段是不是不不能连接了阿
...全文
1213 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
bulaoweng5 2012-04-16
  • 打赏
  • 举报
回复
http://blog.csdn.net/hulihui/article/details/3158613

我也初学者,这篇不错,讲得很详细,帮了我很大忙。。
幸福人生 2011-08-25
  • 打赏
  • 举报
回复
啊,正在学习中却没有下文,好纠结呀
开发者孙小聪 2011-05-25
  • 打赏
  • 举报
回复
一千个 客户端的话性能怎么样 建议使用线程池
wanglei5695312 2010-07-09
  • 打赏
  • 举报
回复
piepie里
KaKaKaKa 2009-11-19
  • 打赏
  • 举报
回复
.net里的socket效率老低了。。
hhc123 2009-11-19
  • 打赏
  • 举报
回复
还好我会看MSDN,
ruanjian2110 2009-11-19
  • 打赏
  • 举报
回复
我也是啊,不会做。压力大啊!!!!!
红街咖啡 2009-07-30
  • 打赏
  • 举报
回复
这正是我要学得。好痛苦啊。不会的东西要我做。压力啊。
周药师 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jonnysun 的回复:]
用线程去处理是很笨的方法, 10000个客户连给来是不是要启动10000个线程和10000个监听器???
哈哈~~~~~笑s我
[/Quote]

用线程去处理是很笨的方法,

写这么多年程序 第一次有人这么说,你真牛!

每个线程工作完了 会自动释放 ,你以为建立了永不释放啊

10000个监听器 ???
你听谁说要这么多
一个Scoket 一个监听
JonnySun 2009-07-29
  • 打赏
  • 举报
回复
用线程去处理是很笨的方法, 10000个客户连给来是不是要启动10000个线程和10000个监听器???
哈哈~~~~~笑s我
daihua_1113 2009-07-29
  • 打赏
  • 举报
回复
学习
journeydj 2009-07-29
  • 打赏
  • 举报
回复
用udp
周药师 2009-07-27
  • 打赏
  • 举报
回复
socket 作为线程去接收数据
每次接收数据时 再新建一个线程去处理数据(尽量不要用全局变量,或者用临界点)
微创社(MCC) 2009-07-26
  • 打赏
  • 举报
回复
给一个思路,使用回调:

定义:private AsyncCallback aaa
实现以下方法:
OnXXXComplete(IAsyncResult ar)
{
...
}
JonnySun 2009-07-26
  • 打赏
  • 举报
回复

我正好做个这个例子,有完整的源代码.

上传在: http://www.vjsdn.com/bbs/bbsTopicDetails.aspx?pid=237

有人会这么做: 当Client连接Server时,Server 启动一个Listener监听这个Client.
那么我问你,100万个client连接server,怎么办? 不整死你才怪!!!

正确的解决方案是: client <-> client 通信, 这样解决依赖server的问题!
server只负责部分管理功能.
semify 2009-07-26
  • 打赏
  • 举报
回复
服务端每与一个客户端建立连接就创建一个线程与客户端交互信息,而主线程又回到监听状态,这样就又能继续与新的客户端建立连接了。用UDP也可以。
pizizhu304 2009-07-26
  • 打赏
  • 举报
回复


要使用多线程

myserver=new IPEndPoint(IPAddress.Parse(this.textBox1.Text),Int32.Parse(this.textBox2.Text));
s=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//构造套接字
s.Bind(myserver);//绑定套接字
s.Listen(1);//刮起连接队列的最大长度
//服务器启动
this.listBox1.Items.Add("服务器已经启动!");

InitClientList(); //初始化socket类数组
this.timer1.Enabled=true;
thread=new Thread(new ThreadStart(target));//开始线程
thread.Start();



target函数为接受连接和接收客户端数据的函数,在函数里,当接受一个连接后立即另启动一个接受连接的线程
xiaogangqq123456 2009-07-26
  • 打赏
  • 举报
回复
服务器只需要一个监听。
监听客户端发来的信息.

如果用TCP+socket套接字 连接的话 多个客户端可以连接一个服务器!
dubuxunmei 2009-07-26
  • 打赏
  • 举报
回复
zgke:给我个例子吧
直接回复或者onlyprice@163.com
zgke 2009-06-22
  • 打赏
  • 举报
回复
服务端是不是只需要建立一个监听?
是..
客户段一旦与服务端建立起连接,其他的客户段是不是不不能连接了阿
监听后可以创建多个SOCKET的实例

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧