byte[] byts=new byte[1024*1024*2];//定义接收数组,大小为2m根据需要,一般设置为1就够了,因为简单接收,不会有太大数据量的。
int length=socket.Receive(byts, 0, byts.Length, SocketFlags.None);//开始接收数据,并将接收到数据放到byts数组中。它的返回值为一个整型,是指接收数据的数量
if(length>0)
{
string msg = System.Text.Encoding.UTF8.GetString(byts, 0, r)
}
OK,到这步,你应该就会了吧,此时拿到的msg就是接收到回来的字符串了。然后启动数据库连接,将msg写入对应的表就可以了。
Asp.net中C#使用Socket发送和接收TCP数据的方法。
具体程序代码如下:
using Systemusing 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()
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)