栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#实现Socket通信的解决方法

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#实现Socket通信的解决方法

本文以实例详述了C#实现Socket通信的解决方法,具体实现步骤如下:

1、首先打开VS新建两个控制台应用程序:
ConsoleApplication_socketServer和ConsoleApplication_socketClient。
 
2、在ConsoleApplication_socketClient中输入以下代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Net; 
using System.Net.Sockets; 
 
namespace ConsoleApplication_socketClient 
{ 
  class Program 
  { 
    static Socket clientSocket; 
    static void Main(string[] args) 
    { 
      //将网络端点表示为IP地址和端口 用于socket侦听时绑定  
      IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("*.*.*.*"), 3001); //填写自己电脑的IP或者其他电脑的IP,如果是其他电脑IP的话需将ConsoleApplication_socketServer工程放在对应的电脑上。 
      clientSocket = new Socket(ipep.AddressFamily,SocketType.Stream,ProtocolType.Tcp);  
      //将Socket连接到服务器  
      try 
      { 
 clientSocket.Connect(ipep); 
 String outBufferStr; 
 Byte[] outBuffer = new Byte[1024]; 
 Byte[] inBuffer = new Byte[1024]; 
 while (true) 
 { 
   //发送消息  
   outBufferStr = Console.ReadLine(); 
   outBuffer = Encoding.ASCII.GetBytes(outBufferStr); 
   clientSocket.Send(outBuffer, outBuffer.Length, SocketFlags.None); 
    
   //接收服务器端信息 
   clientSocket.Receive(inBuffer, 1024, SocketFlags.None);//如果接收的消息为空 阻塞 当前循环 
   Console.WriteLine("服务器说:"); 
   Console.WriteLine(Encoding.ASCII.GetString(inBuffer)); 
 } 
      } 
      catch 
      { 
 Console.WriteLine("服务未开启!"); 
 Console.ReadLine(); 
      } 
    } 
  } 
} 

3、在ConsoleApplication_socketServer中输入以下代码:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Net; 
using System.Net.Sockets; 
using System.Threading; 
 
namespace ConsoleApplication_socketServer 
{ 
  class Program 
  { 
    static Socket serverSocket; 
    static Socket clientSocket; 
    static Thread thread; 
    static void Main(string[] args) 
    { 
      IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 3001); 
      serverSocket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
      serverSocket.Bind(ipep); 
      serverSocket.Listen(10); 
      while (true) 
      { 
 clientSocket = serverSocket.Accept(); 
 thread = new Thread(new ThreadStart(doWork)); 
 thread.Start(); 
      } 
    } 
    private static void doWork() 
    { 
      Socket s = clientSocket;//客户端信息 
      IPEndPoint ipEndPoint = (IPEndPoint)s.RemoteEndPoint; 
      String address = ipEndPoint.Address.ToString(); 
      String port = ipEndPoint.Port.ToString(); 
      Console.WriteLine(address + ":" + port + " 连接过来了"); 
      Byte[] inBuffer = new Byte[1024]; 
      Byte[] outBuffer = new Byte[1024]; 
      String inBufferStr; 
      String outBufferStr; 
      try 
      { 
 while (true) 
 { 
   s.Receive(inBuffer, 1024, SocketFlags.None);//如果接收的消息为空 阻塞 当前循环 
   inBufferStr = Encoding.ASCII.GetString(inBuffer); 
   Console.WriteLine(address + ":" + port + "说:"); 
   Console.WriteLine(inBufferStr); 
   outBufferStr = Console.ReadLine(); 
   outBuffer = Encoding.ASCII.GetBytes(outBufferStr); 
   s.Send(outBuffer, outBuffer.Length, SocketFlags.None); 
 } 
      } 
      catch 
      { 
 Console.WriteLine("客户端已关闭!"); 
      } 
    } 
  } 
} 
 

4、先运行ConsoleApplication_socketServer,后运行ConsoleApplication_socketClient就可以通信了。

本例给出了基本的实现代码,读者可以根据自身的需求进一步完成个性化功能。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/126408.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号