源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#使用Socket发送和接收TCP数据实例

  • 时间:2021-08-31 00:55 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#使用Socket发送和接收TCP数据实例
本文实例讲述了Asp.net中C#使用Socket发送和接收TCP数据的方法,分享给大家供大家参考。具体实现方法如下: 具体程序代码如下:
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; namespace ConsoleApplication1 {     public static class SocketTest     {         private static Encoding encode = Encoding.Default;         /// <summary>         /// 监听请求         /// </summary>         /// <param name="port"></param>         public static void Listen(int port)         {             Socket listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);             listenSocket.Bind(new IPEndPoint(IPAddress.Any, port));             listenSocket.Listen(100);             Console.WriteLine("Listen " + port + " ...");             while (true)             {                 Socket acceptSocket = listenSocket.Accept();                 string receiveData = Receive(acceptSocket, 5000); //5 seconds timeout.                 Console.WriteLine("Receive:" + receiveData);                 acceptSocket.Send(encode.GetBytes("ok"));                 DestroySocket(acceptSocket); //import             }         }         /// <summary>         /// 发送数据         /// </summary>         /// <param name="host"></param>         /// <param name="port"></param>         /// <param name="data"></param>         /// <returns></returns>         public static string Send(string host, int port, string data)         {             string result = string.Empty;             Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);             clientSocket.Connect(host, port);             clientSocket.Send(encode.GetBytes(data));             Console.WriteLine("Send:" + data);             result = Receive(clientSocket, 5000 * 2); //5*2 seconds timeout.             Console.WriteLine("Receive:" + result);             DestroySocket(clientSocket);             return result;         }         /// <summary>         /// 接收数据         /// </summary>         /// <param name="socket"></param>         /// <param name="timeout"></param>         /// <returns></returns>         private static string Receive(Socket socket, int timeout)         {             string result = string.Empty;             socket.ReceiveTimeout = timeout;             List<byte> data = new List<byte>();             byte[] buffer = new byte[1024];             int length = 0;             try             {                 while ((length = socket.Receive(buffer)) > 0)                 {                     for (int j = 0; j < length; j++)                     {                         data.Add(buffer[j]);                     }                     if (length < buffer.Length)                     {                         break;                     }                 }             }             catch { }             if (data.Count > 0)             {                 result = encode.GetString(data.ToArray(), 0, data.Count);             }             return result;         }         /// <summary>         /// 销毁Socket对象         /// </summary>         /// <param name="socket"></param>         private static void DestroySocket(Socket socket)         {             if (socket.Connected)             {                 socket.Shutdown(SocketShutdown.Both);             }             socket.Close();         }     } }
运行服务器监听数据:
[u]复制代码[/u] 代码如下:
SocketTest.Listen(8888);
发送和接收TCP数据:
[u]复制代码[/u] 代码如下:
SocketTest.Send("127.0.0.1", 8888, "www.1sucai.cn");
运行效果如下图所示: [img]http://files.jb51.net/file_images/article/201410/20141028112637356.jpg?201492811270[/img] 希望本文所述对大家的C#程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部