C#通讯编程(整理)TCP/UDP通讯

namespace  UDPServer
{
     class  Program
     {
         static  void  Main( string [] args)
         {
             int  recv;
             byte [] data =  new  byte [1024]; 
 
             //构建TCP 服务器
 
             //得到本机IP,设置TCP端口号         
             IPEndPoint ipep =  new  IPEndPoint(IPAddress.Any , 8001);
             Socket newsock =  new  Socket(AddressFamily.InterNetwork
, SocketType.Dgram , ProtocolType.Udp);
 
             //绑定网络地址
             newsock.Bind(ipep);
 
             Console.WriteLine( "This is a Server, host name is {0}" ,Dns.GetHostName());
 
             //等待客户机连接
             Console.WriteLine( "Waiting for a client..." );
 
             //得到客户机IP
             IPEndPoint sender =  new  IPEndPoint(IPAddress.Any, 0);
             EndPoint Remote = (EndPoint)(sender);
             recv = newsock.ReceiveFrom(data,  ref  Remote);
             Console .WriteLine ( "Message received from {0}: " , Remote.ToString ());
             Console .WriteLine (Encoding .ASCII .GetString (data ,0,recv ));
 
             //客户机连接成功后,发送欢迎信息
             string  welcome =  "Welcome ! " ;
 
             //字符串与字节数组相互转换
             data  = Encoding .ASCII .GetBytes (welcome );
 
             //发送信息
             newsock .SendTo (data ,data.Length ,SocketFlags .None ,Remote );
             while  ( true  )
             {
                 data = new  byte  [1024];
                 //发送接受信息
                 recv =newsock.ReceiveFrom(data , ref  Remote);
                 Console .WriteLine (Encoding .ASCII .GetString (data ,0,recv));
                 newsock .SendTo (data ,recv ,SocketFlags .None ,Remote );
             }
         }
 
         }
     }


using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Text;
using  System.Net;
using  System.Net.Sockets;
 
namespace  UDPClient
{
     class  Program
     {
         static  void  Main( string [] args)
         {
             byte [] data =  new  byte [1024];
             string  input ,stringData;
 
             //构建TCP 服务器
 
             Console.WriteLine( "This is a Client, host name is {0}" , Dns.GetHostName());
 
             //设置服务IP,设置TCP端口号
             IPEndPoint ipep =  new  IPEndPoint(IPAddress .Parse ( "127.0.0.1" ) , 8001);
 
             //定义网络类型,数据连接类型和网络协议UDP
             Socket server =  new  Socket(AddressFamily.InterNetwork
, SocketType.Dgram, ProtocolType.Udp);
 
             string  welcome =  "Hello! " ;
             data = Encoding.ASCII.GetBytes(welcome);
             server.SendTo(data, data.Length, SocketFlags.None, ipep);
             IPEndPoint sender =  new  IPEndPoint(IPAddress.Any, 0);
             EndPoint Remote = (EndPoint)sender;
 
             data =  new  byte [1024];
             int  recv = server.ReceiveFrom(data,  ref  Remote);
             Console.WriteLine( "Message received from {0}: " , Remote.ToString());
             Console.WriteLine(Encoding .ASCII .GetString (data,0,recv));
             while  ( true )
             {
                 input = Console .ReadLine ();
                 if  (input == "exit" )
                     break  ;
                 server .SendTo (Encoding .ASCII .GetBytes (input ),Remote );
                 data =  new  byte  [1024];
                 recv = server.ReceiveFrom(data,  ref  Remote);
                 stringData = Encoding.ASCII.GetString(data, 0, recv);
                 Console.WriteLine(stringData);
             }
             Console .WriteLine ( "Stopping Client." );
             server .Close ();            
         }
 
         }
     }

简单的UDP
try
                     {
                         Socket s =  new  Socket(AddressFamily.InterNetwork
, SocketType.Dgram, ProtocolType.Udp);   //向此网段发广播包
                           int  UDPListenerPort = 8082;
                         IPAddress broadcast = IPAddress.Parse( "192.168.0.255" );  //此处根据IP及子网掩码改为相应的广播IP
                         string  ts =  "This is UPD string for sending" ;
                         byte [] sendbuf = Encoding.ASCII.GetBytes(ts);
                         IPEndPoint ep =  new  IPEndPoint(broadcast, UDPListenerPort);
                         s.SendTo(sendbuf, ep);
 
                     }
                     catch  (Exception e)
                     {}

UdpClient listener;
             int  UDPListenerPort = 8082;
             IPEndPoint groupEP =  new  IPEndPoint(IPAddress.Any, UDPListenerPort);
 
             try
             {
                 while  ( true )
                 {
                     byte [] bytes = listener.Receive( ref  groupEP);
                     string  RecIP = groupEP.ToString()
.Substring(0, groupEP.ToString().IndexOf( ":" ));   //收到发送UPD端的IP
                     string  RecStr = Encoding.ASCII.GetString(bytes, 0, bytes.Length);    //收到的UPD字符串
                 }
             }
             catch
             {}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值