网络疑问 关于Socket

ilost1013 2008-05-25 11:03:57
多个客户端与服务器通 N*C -> S

当一个或多个客户端发起连接通信,服务器就可以建立连接;
服务器可以自动监听不同客户端发送过来的数据,并分别返回相应的数据给客户端。

考虑用Socket通信,但不知道如何做?

刚开始接触Socket,没有什么概念,希望各位大侠指点迷津


...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pang2042 2008-05-26
  • 打赏
  • 举报
回复
我最近就在写类似的,我这里代码也不是很完整.但是思路就是这样
TCPLISTENER监听开始后,有新的连接你就可以得到一个新的SOCKET或是TCPCLIENT,用SOCKET更"底层"一些.TCPCLIETNT更方便
pang2042 2008-05-26
  • 打赏
  • 举报
回复
多用户应该要用到多线程.
先在服务端建立一个TCPLISTENER监听起来,然后每有一个新的连接就启用一个新的线程处理这个连接
ilost1013 2008-05-25
  • 打赏
  • 举报
回复
想请问下,异步读写是什么意思?可以解释下吗?
ilost1013 2008-05-25
  • 打赏
  • 举报
回复
大伙,可以给出vb.net 2005的代码?
zzultc 2008-05-25
  • 打赏
  • 举报
回复
服务器端建议使用异步读写!
异步读写,内部是完成端口来实现的,再windows下有着最好的弹性!
对于你说的连接池,这是系统自身考虑的,你的应用程序可以不考虑!

另外,如果你的客户端非常得多,一般来讲N>100,我值得是同时,还是建议你使用C++结合socket2.0的完成端口来开发。
你需要根据实际情况考虑。
changjiangzhibin 2008-05-25
  • 打赏
  • 举报
回复

//From NetWork
客户端主要源代码:

public void SendMeg()//发送信息
{
try
{
int port=Int32.Parse(textBox3.Text.ToString());//远程主机端口
try
{
tcpClient=new TcpClient(textBox1.Text,port);//创建TcpClient对象实例
}
catch(Exception le)
{
MessageBox.Show("TcpClient Error:"+le.Message);
}
string strDateLine=DateTime.Now.ToShortDateString()+" "+DateTime.Now.ToLongTimeString();//得到发送时客户端时间
netStream=tcpClient.GetStream();//得到网络流
sw=new StreamWriter(netStream);//创建TextWriter,向流中写字符
string words=textBox4.Text;//待发送的话
string content=strDateLine+words;//待发送内容
sw.Write(content);//写入流
sw.Close();//关闭流写入器
netStream.Close();//关闭网络流
tcpClient.Close();//关闭客户端连接
}
catch(Exception ex)
{
MessageBox.Show("Sending Message Failed!"+ex.Message);
}
textBox4.Text="";//清空
}


服务器端主要源代码:

public void StartListen()//侦听特定端口的用户请求
{
//ReceiveMeg();
isLinked=false; //连接标志
try
{
int port=Int32.Parse(textBox1.Text.ToString());//本地待侦听端口
serverListener=new TcpListener(port);//创建TcpListener对象实例
serverListener.Start(); //启动侦听
}
catch(Exception ex)
{
MessageBox.Show("Can't Start Server"+ex.Message);
return;
}
isLinked=true;
while(true)//进入无限循环等待用户端连接
{
try
{
tcpClient=serverListener.AcceptTcpClient();//创建客户端连接对象
netStream=tcpClient.GetStream();//得到网络流
sr=new StreamReader(netStream);//流读写器
}
catch(Exception re)
{
MessageBox.Show(re.Message);
}
string buffer="";
string received="";
received+=sr.ReadLine();//读流中一行
while(received.Length!=0)
{
buffer+=received;
buffer+="\r\n";
//received="";
received=sr.ReadLine();
}
listBox1.Items.Add(buffer);//显示
//关闭
sr.Close();
netStream.Close();
tcpClient.Close();
}
}
ilost1013 2008-05-25
  • 打赏
  • 举报
回复
是否要考虑到什么链接池的问题,如果是要怎么做?

请大伙发表下思路,有源码更好了~~~

海谢大伙,先。。。

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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