科技行者

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

知识库

知识库 安全导航

至顶网软件频道基础软件一步一步实现.NET下的Socket通信编程

一步一步实现.NET下的Socket通信编程

  • 扫一扫
    分享文章到微信

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

随着Web技术的发展,Socket通信逐渐被人们遗忘。然而最近Socket应用却又越来越多。尤其是中国移动,中国联通的短信网关就是基于Socket通迅,另外随着大家对MSN、QQ等IM工具通迅协议的研究。

作者:程序人生 来源:博客园 2007年11月4日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
10¡¢ ÏÂÃæÎÒÃÇÁíÍâÆô¶¯Ò»¸öVS.NET2003ʵÀý£¬½¨Á¢Ò»¸öÏîÄ¿SocketClientTest£¬²¢Í¨¹ýÌí¼ÓÒÑ´æÔÚµÄÏîÄ¿Ôö¼ÓSocketLibrary£¬Ôö¼Ó¶Ô´ËÏîÄ¿µÄÒýÓá£

 

¡¡¡¡11¡¢ н¨Ò»¸öClientÀà¡£²¢Ð´ÉÏÒÔÏÂÔ´´úÂë

1using System;
2
3using System.Net;
4
5using System.Net.Sockets;
6
7
8
9namespace SocketLibrary
10
11{
12
13
14
15 public class Client
16
17 {
18
19 public const int CONNECTTIMEOUT = 10;
20
21 public Connection _connection;
22
23 public Client()
24
25 {
26
27
28
29 }
30
31 public static Connection StartClient(IPAddress ipaddress,int port) {
32
33 TcpClient client = new TcpClient();
34
35 client.SendTimeout = CONNECTTIMEOUT;
36
37 client.ReceiveTimeout = CONNECTTIMEOUT;
38
39
40
41 client.Connect(ipaddress,port);
42
43 }
44
45 }
46
47}
48

¡¡¡¡ÔÚSocketFactoryÖмÓÈëStartClientº¯Êý

1public Connection StartClient(IPAddress ip,int port)
2
3{
4
5 return Client.StartClient(ip,port);
6
7}
8

¡¡¡¡ÔÚSocketClientµÄForm1µÄForm1_LoadÖмÓÈëÒÔÏ´úÂë²¢²åÈë¶Ïµã¡£¿ªÊ¼µ÷ÊÔÖ´ÐС£µ±Ö´ÐÐÈ¡×îºóÒ»¾äʱ¡£ÎÒÃÇ¿´µ½_connectionÒѾ­Á¬½Ó³É¹¦¡£


¡¡¡¡ºÃÁË£¬ÏÖÔÚÎÒÃǵĿͻ§¶ËÒѾ­Á¬½ÓÉÏ·þÎñÆ÷£¬²¢¿ÉÒÔ·¢ËÍÏûÏ¢ÁË¡£µ«ÏÖÔÚÎÒÃÇ»¹Ã»ÓÐÈçºÎ·¢ËÍÏûÏ¢µÄ·½·¨¡£ÎÒÃÇÔÚSocketFactoryÖÐÔö¼ÓÒ»¸ö·¢ÏûÏ¢µÄ¾²Ì¬·½·¨¡£²¢ÇÒÉùÃ÷Ò»¸ö±àÂëÀàÐ͵ľ²Ì¬±äÁ¿

public static System.Text.Encoding DefaultEncoding = System.Text.Encoding.GetEncoding("GB2312");

public static void SendMessage(string message,Connection connection) {

byte[] buffer = DefaultEncoding.GetBytes(message);

connection.NetworkStream.Write(buffer,0,buffer.Length);

}

¡¡¡¡ÏÖÔÚÎÒÃÇ¿ÉÒÔÓÃÕâ¸öº¯Êý·¢ÏûÏ¢¸ø·þÎñÆ÷¶ËÁË¡£


¡¡¡¡ÎÒÃÇ¿´µ½ÏûÏ¢·¢Ëͳɹ¦£¬µ«·þÎñÆ÷¶ËûÓÐÈκη´Ó¦¡£ÕâÊÇÒòΪÎÒÃÇ»¹Ã»ÓÐÔÚ·þÎñÆ÷¶ËÕìÌýÏûÏ¢¡£ÔÚServerÀàÖÐÔö¼ÓÈçÏ´úÂë¼ÓÈ뿪ʼÕìÌýÍøÂçÁ÷µÄÏß³Ì

public void Listenning() {

while(true) {

System.Threading.Thread.Sleep(200);

foreach(Connection connection in this._connections) {

if(connection.NetworkStream.CanRead && connection.NetworkStream.DataAvailable) {

byte[] buffer = new byte[1024];

int count = connection.NetworkStream.Read(buffer,0,buffer.Length);

Console.Write(SocketFactory.DefaultEncoding.GetString(buffer,0,count));

}

}

}

}

1public void StartListen() {
2
3 _listenningthread = new System.Threading.Thread(new System.Threading.ThreadStart(Listenning));
4
5 _listenningthread.Start();
6
7}
8
9private System.Threading.Thread _listenningthread;
10

¡¡¡¡ÔÙÔÚSocketFactoryµÄStartServerÖмÓÈëÒÔÏ´úÂ룬ÒÔ¿ªÊ¼ÕìÌýÍøÂçÁ÷¡£


¡¡¡¡ºÃ¡£ÎÒÃÇÔÙÆô¶¯SocketServerTest¡£²¢ÔËÐÐSocketClientTest¡£ÏÖÔÚÔÚSocketServerTestµÄ¿ØÖÆ̨¿ÉÒÔ¿´µ½ÈçÏÂÊä³ö£º

 

¡¡¡¡Ò²¼´·þÎñÆ÷ÊÕµ½ÁË¿Í»§¶Ë·¢À´µÄHello ServerµÄÏûÏ¢¡£

¡¡¡¡±¾ÎÄÎÒÃǾ͵½ÕâÀï¡£ÒÔºóÎÒÃÇÔÙ¼ÌÐø½²ÈçºÎÖع¹±¾ÎĵĴúÂ룬²¢¼ÌÐøÉîÈëµÄ½²ÈçºÎ¶¨ÒåЭÒéÒÔ¼°ÈçºÎʹÓÃÕâЩЭÒéÊÕ·¢ÏûÏ¢¡£

查看本文来源

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

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

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