| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1652 人关注过本帖
标题:C#SOCKET服务器的问题
取消只看楼主 加入收藏
pan973
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2009-4-24
结帖率:66.67%
收藏
 问题点数:0 回复次数:3 
C#SOCKET服务器的问题
调用:
            IPEndPoint local = new IPEndPoint("127.0.0.1", 8050);
            serverListener = new TcpListener(local);      
                    MessageBox.Show("开始了");
                    serverListener.Start();


                    thListen = new Thread(new ThreadStart(ServerListen));
                    thListen.Start();
函数
private void ServerListen()
        {
            
            while (true)
            {
                tcpClient = serverListener.AcceptTcpClient();

                int a = 0;
                byte[] buffer = new byte[1024];
                NetworkStream stream = tcpClient.GetStream();
                try
                {
                    a = stream.Read(buffer, 0, 1024);   
                    string temp = "", message = "";
                    if (a > 0)
                    {
                        temp = System.Text.Encoding.ASCII.GetString(buffer, 0, a);
                        message += temp;

                        message = Encoding.ASCII.GetString(buffer, 0, a);

                        MessageBox.Show("接收到" + message);
                    }
                    else
                    {
                        //tcpClient.Close();
                        MessageBox.Show("断开");
                    

                    }
                    //stream.Close();//这个如果使用的话,服务器一接到数据,客户端就会被关掉
                }
                catch (Exception ex)
                {
                    //TODO:接收数据线程异常处理
                    
                    MessageBox.Show(ex.Message);

                }
            }
        }

经过我多次。。无数次实验后发现
当tcpClient = serverListener.AcceptTcpClient();在while里面时,服务器可以接收(处理)同一客户端发送的多个请求

当tcpClient = serverListener.AcceptTcpClient();在while外面时,服务器可以接收(处理)多一客户端发送的一个请求


哪位大大能不能帮帮我改看看,使其可以接收(处理)多一客户端发送的多个请求,本人新人,所以呢,希望各位大大给意见时不要随口说说,最好能帮改下,谢谢了
搜索更多相关主题的帖子: 服务器 SOCKET 
2009-09-21 08:10
pan973
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2009-4-24
收藏
得分:0 
sorry 我今天才上的,呵呵
2009-09-22 14:06
pan973
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2009-4-24
收藏
得分:0 
弱弱的问一句,怎么结帖啊,,,,,,
2009-09-22 14:15
pan973
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2009-4-24
收藏
得分:0 
我测试过了,必须在DoSomeThing在加个循环,我改了一下,如:
private void DoSomeThing(object parmater)
{
    TcpClient newTcpClient= parmater as TcpClient ;//将参数转换成TcpClinet  
    int a = 0;  
    byte[] buffer = new byte[1024];  
    NetworkStream stream = newTcpClient.GetStream(); //
    while (true)
    {
        try
        {
            a = stream.Read(buffer, 0, 1024);
            string temp = "", message = "";
            if (a > 0)
            {
                temp = System.Text.Encoding.ASCII.GetString(buffer, 0, a);
                message += temp;
 
                message = Encoding.ASCII.GetString(buffer, 0, a);
 
                MessageBox.Show("接收到" + message);
            }
            else
            {
                newTcpClient.Close();  
                MessageBox.Show("断开");
                break;
 
            }
            //stream.Close();//这个如果使用的话,服务器一接到数据,客户端就会被关掉  
        }
        catch (Exception ex)
        {
            //TODO:接收数据线程异常处理  
 
            MessageBox.Show(ex.Message);
 
        }
    }
}
我试了下,很是符合我的要求
谢谢“乖老鼠”
2009-09-22 14:26
快速回复:C#SOCKET服务器的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017342 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved