在winform中,写一段代码,实现socket监听客户端连接请求,接收和发送数据。
时间: 2023-05-14 15:04:27 浏览: 93
以下是一个简单的示例代码,用于在WinForm中实现Socket监听客户端连接请求,接收和发送数据:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
namespace SocketServer
{
public partial class Form1 : Form
{
private Socket serverSocket;
private byte[] buffer = new byte[1024];
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serverSocket.Bind(new IPEndPoint(IPAddress.Any, 8888));
serverSocket.Listen(10);
serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null);
}
private void AcceptCallback(IAsyncResult ar)
{
Socket clientSocket = serverSocket.EndAccept(ar);
clientSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), clientSocket);
serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), null);
}
private void ReceiveCallback(IAsyncResult ar)
{
Socket clientSocket = (Socket)ar.AsyncState;
int bytesRead = clientSocket.EndReceive(ar);
if (bytesRead > 0)
{
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
MessageBox.Show(message);
clientSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), clientSocket);
}
}
private void button1_Click(object sender, EventArgs e)
{
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888));
string message = textBox1.Text;
clientSocket.Send(Encoding.ASCII.GetBytes(message));
}
}
}
```
这段代码创建了一个Socket服务器,监听来自客户端的连接请求,并在接收到数据时显示消息框。同时,它还创建了一个按钮,用于向服务器发送数据。