一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Asp.net中C#使用Socket发送和接收TCP数据示例

时间:2022-06-25 08:12:43 编辑:袖梨 来源:一聚教程网

程序代码

代码如下 复制代码

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;

///


/// 监听请求
///

///
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
}
}

///


/// 发送数据
///

///
///
///
///
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;
}

///


/// 接收数据
///

///
///
///
private static string Receive(Socket socket, int timeout)
{
string result = string.Empty;

socket.ReceiveTimeout = timeout;
List data = new List();
byte[] buffer = new byte[1024];
int length = 0;
try
{
while ((length = socket.Receive(buffer)) > 0)
{
for (int j = 0; j {
data.Add(buffer[j]);
}
if (length {
break;
}
}
}
catch { }
if (data.Count > 0)
{
result = encode.GetString(data.ToArray(), 0, data.Count);
}

return result;
}

///


/// 销毁Socket对象
///

///
private static void DestroySocket(Socket socket)
{
if (socket.Connected)
{
socket.Shutdown(SocketShutdown.Both);
}
socket.Close();
}
}
}

运行服务器监听数据:

代码如下 复制代码
SocketTest.Listen(8888);

发送和接收TCP数据:


SocketTest.Send("127.0.0.1", 8888, "www.111com.net");]

Asp.net中C#使用Socket发送和接收TCP数据示例

热门栏目