问题描述
多个客户端与服务器通N*C->S当一个或多个客户端发起连接通信,服务器就可以建立连接;服务器可以自动监听不同客户端发送过来的数据,并分别返回相应的数据给客户端。考虑用Socket通信,但不知道如何做?刚开始接触Socket,没有什么概念,希望各位大侠指点迷津
解决方案
解决方案二:
是否要考虑到什么链接池的问题,如果是要怎么做?请大伙发表下思路,有源码更好了~~~海谢大伙,先。。。
解决方案三:
//FromNetWork客户端主要源代码:publicvoidSendMeg()//发送信息{try{intport=Int32.Parse(textBox3.Text.ToString());//远程主机端口try{tcpClient=newTcpClient(textBox1.Text,port);//创建TcpClient对象实例}catch(Exceptionle){MessageBox.Show("TcpClientError:"+le.Message);}stringstrDateLine=DateTime.Now.ToShortDateString()+""+DateTime.Now.ToLongTimeString();//得到发送时客户端时间netStream=tcpClient.GetStream();//得到网络流sw=newStreamWriter(netStream);//创建TextWriter,向流中写字符stringwords=textBox4.Text;//待发送的话stringcontent=strDateLine+words;//待发送内容sw.Write(content);//写入流sw.Close();//关闭流写入器netStream.Close();//关闭网络流tcpClient.Close();//关闭客户端连接}catch(Exceptionex){MessageBox.Show("SendingMessageFailed!"+ex.Message);}textBox4.Text="";//清空}服务器端主要源代码:publicvoidStartListen()//侦听特定端口的用户请求{//ReceiveMeg();isLinked=false;//连接标志try{intport=Int32.Parse(textBox1.Text.ToString());//本地待侦听端口serverListener=newTcpListener(port);//创建TcpListener对象实例serverListener.Start();//启动侦听}catch(Exceptionex){MessageBox.Show("Can'tStartServer"+ex.Message);return;}isLinked=true;while(true)//进入无限循环等待用户端连接{try{tcpClient=serverListener.AcceptTcpClient();//创建客户端连接对象netStream=tcpClient.GetStream();//得到网络流sr=newStreamReader(netStream);//流读写器}catch(Exceptionre){MessageBox.Show(re.Message);}stringbuffer="";stringreceived="";received+=sr.ReadLine();//读流中一行while(received.Length!=0){buffer+=received;buffer+="rn";//received="";received=sr.ReadLine();}listBox1.Items.Add(buffer);//显示//关闭sr.Close();netStream.Close();tcpClient.Close();}}
解决方案四:
服务器端建议使用异步读写!异步读写,内部是完成端口来实现的,再windows下有着最好的弹性!对于你说的连接池,这是系统自身考虑的,你的应用程序可以不考虑!另外,如果你的客户端非常得多,一般来讲N>100,我值得是同时,还是建议你使用C++结合socket2.0的完成端口来开发。你需要根据实际情况考虑。
解决方案五:
大伙,可以给出vb.net2005的代码?
解决方案六:
想请问下,异步读写是什么意思?可以解释下吗?
解决方案七:
多用户应该要用到多线程.先在服务端建立一个TCPLISTENER监听起来,然后每有一个新的连接就启用一个新的线程处理这个连接
解决方案八:
我最近就在写类似的,我这里代码也不是很完整.但是思路就是这样TCPLISTENER监听开始后,有新的连接你就可以得到一个新的SOCKET或是TCPCLIENT,用SOCKET更"底层"一些.TCPCLIETNT更方便