C#中Socket编程

来源:互联网 发布:淘宝刷差评多少钱一单 编辑:程序博客网 时间:2024/05/17 05:18

      下面在给出无连接的 


using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace SimpleUdpSrvr
{
    
class Program
    {
        
static void Main(string[] args)
        {
            
int recv;
            
byte[] data = new byte[1024];
            IPEndPoint ipep 
= new IPEndPoint(IPAddress.Any, 9050);//定义一网络端点
            Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//定义一个Socket
            newsock.Bind(ipep);//Socket与本地的一个终结点相关联
            Console.WriteLine("Waiting for a client..");

            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.GetBytes(data,
0,recv));

            
string welcome = "Welcome to my test server!";
            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.Text;
using System.Net;
using System.Net.Sockets;
namespace SimpleUdpClient
{
    
class Program
    {
        
static void Main(string[] args)
        {
            
byte[] data = new byte[1024];//定义一个数组用来做数据的缓冲区
            string input, stringData;
            IPEndPoint ipep 
= new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9050);
            Socket server 
= new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            
string welcome = "Hello,are you there?";
            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 == "text")//结束标记
                {
                    
break;
                }
                server.SendTo(Encoding.ASCII.GetBytes(input), Remote);
//将数据发送到指定的终结点Remote
                data = new byte[1024];
                recv 
= server.ReceiveFrom(data, ref Remote);//从Remote接受数据
                stringData = Encoding.ASCII.GetString(data, 0, recv);
                Console.WriteLine(stringData);
            }
            Console.WriteLine(
"Stopping client");
            server.Close();
        }
    }
}     

 

     上面的示例只是简单的应用了socket来实现通信,你也可以实现异步socket、IP组播 等等。

0 0
原创粉丝点击