科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道[冷枫]socket异步处理问题

[冷枫]socket异步处理问题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

socket异步处理问题,解决端口占用.

作者:冷枫 来源:CSDN 2007年9月21日

关键字: 冷枫 socket 异步处理

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

由于一个项目要和第三方软件做接口,第三方软件是Unix的操作系统,所以用了Socket来传输数据。
具体结构是这样的:本项目作为服务器端,第三方软件是客户端,并且有多个客户端。

通常情况下,要开多个线程来处理多个客户端,并且一个客户端要占用一个端口,每个客户端在访问服务端时,服务器端要找到当前空闲的端口返回给客户端进行调用。
msdn上提供了这种的解决方案:
http://www.microsoft.com/china/msdn/archives/library/dncscol/html/csharp09182003.asp

但是,经过我今天的摸索,发现用socket异步处理也能解决这个问题,只要一个端口就可以给n个客户端访问了。
并且客户不需要做异步处理,只是服务端做异步处理就可以了。这样的话,第三方软件改动量就很小,主要控制权在我这里。
客户端做法的代码片断:
创建连接:
mobj_stSend = new Socket ( AddressFamily.InterNetwork , 
                    SocketType.Stream , ProtocolType.Tcp ) ; 
//初始化一个Socket实例 
                
                IPEndPoint tempRemoteIP 
= new IPEndPoint 
                    ( IPAddress.Parse ( textBox1.Text ) , mi_port ) ; 
//根据IP地址和端口号创建远程终结点 
                
                EndPoint epTemp 
= ( EndPoint ) tempRemoteIP ; 
                mobj_stSend.Connect ( epTemp ) ; 
//连接远程主机的8000端口号 

发送数据:
 int iLength = textBox2.Text.Length ; //获取要发送的数据的长度 
            
                Byte [ ] bySend 
= new byte [ iLength ] ; //根据获取的长度定义一个Byte类型数组 
            
                bySend 
= System.Text.Encoding.Default.GetBytes 
                    ( textBox2.Text ) ; 
//按照指定编码类型把字符串指定到指定的Byte数组 
            
                
int i = mobj_stSend.Send ( bySend ) ; //发送数据 

服务器端做了一个Socket数组来存放所有客户端的连接:
private Socket ListenSoc ; 
        
public static ManualResetEvent allDone = new ManualResetEvent(false);
        
private Socket [] SocClient;
        
private const int MAX_SOCKET= 100;
        Thread mobj_thTreadRead;

启动监听线程:
 
mobj_thTreadRead = new Thread ( new ThreadStart ( Listen ) ) ;//以Listen过程来初始化Thread实例            
            mobj_thTreadRead.Start() ;//启动线程            
            button1.Enabled = false  ;
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章