c# SOCKET同步通信

服务器端:

using  System;
using  System.Net;
using  System.Net.Sockets;
using  System.Text;
public   class  SynchronousSocketClient
{
    
public static void StartClient()
    
{
        
// Data buffer for incoming data. 

        
byte[] bytes = new byte[1024];
        
// Connect to a remote device. 

        
try
        
{
           
            
// 使用 8088端口 在本机上
            IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());

           
            IPAddress ipAddress 
= ipHostInfo.AddressList[0];
            IPEndPoint remoteEP 
= new IPEndPoint(ipAddress, 8088);
         
            Socket sender 
= new Socket(AddressFamily.InterNetwork,
            SocketType.Stream, ProtocolType.Tcp);
            
// 建立TCP连接. Catch any errors. 


            
try
            
{
                sender.Connect(remoteEP);
                Console.WriteLine(
"Socket connected to {0}",
                sender.RemoteEndPoint.ToString());
               

                
byte[] msg = Encoding.ASCII.GetBytes("This is a test<EOF>");
                

                
int bytesSent = sender.Send(msg);
              

                
int bytesRec = sender.Receive(bytes);
                Console.WriteLine(
"Echoed test = {0}",
                Encoding.ASCII.GetString(bytes, 
0, bytesRec));
              
                sender.Shutdown(SocketShutdown.Both);
                sender.Close();
            }

            
catch (ArgumentNullException ane)
            
{
                Console.WriteLine(
"ArgumentNullException : {0}", ane.ToString());
            }

            
catch (SocketException se)
            
{
                Console.WriteLine(
"SocketException : {0}", se.ToString());
            }

            
catch (Exception e)
            
{
                Console.WriteLine(
"Unexpected exception : {0}", e.ToString());
            }

        }

        
catch (Exception e)
        
{
            Console.WriteLine(e.ToString());
        }

    }

    
public static int Main(String[] args)
    
{
        StartClient();
        
return 0;
    }

}


 

客户端:

 

using  System; 
using  System.Net; 
using  System.Net.Sockets; 
using  System.Text;
public   class  SynchronousSocketListener
{
   
    
public static string data = null;
    
public static void StartListening()
    
{
        

        
byte[] bytes = new Byte[1024];
      
        IPHostEntry ipHostInfo 
= Dns.GetHostEntry(Dns.GetHostName());
      
        IPAddress ipAddress 
= ipHostInfo.AddressList[0];
        IPEndPoint localEndPoint 
= new IPEndPoint(ipAddress, 8088);
      

        Socket listener 
= new Socket(AddressFamily.InterNetwork,
        SocketType.Stream, ProtocolType.Tcp);
        
        
try
        
{
            listener.Bind(localEndPoint);
            listener.Listen(
10);
         

            
while (true)
            
{
                Console.WriteLine(
"Waiting for a connection...");
     
                Socket handler 
= listener.Accept();
                data 
= null;
              

                
while (true)
                
{
                    bytes 
= new byte[1024];
                    
int bytesRec = handler.Receive(bytes);
                    data 
+= Encoding.ASCII.GetString(bytes, 0, bytesRec);
                    
if (data.IndexOf("<EOF>"> -1)
                    
{
                        
break;
                    }

                }

             

                Console.WriteLine(
"Text received : {0}", data);

                
byte[] msg = Encoding.ASCII.GetBytes(data);
                handler.Send(msg);
                handler.Shutdown(SocketShutdown.Both);
                handler.Close();
            }

        }

        
catch (Exception e)
        
{
            Console.WriteLine(e.ToString());
        }

        Console.WriteLine(
" Press ENTER to continue...");
        Console.Read();
    }

    
public static int Main(String[] args)
    
{
        StartListening();
        
return 0;
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值