winform 使用socket创建服务端
时间: 2023-07-30 16:07:25 浏览: 122
下面是使用WinForm创建TCP/IP服务端的步骤:
1. 在WinForm中添加一个按钮和一个文本框控件,用于启动服务端和显示服务端状态。
2. 在按钮的Click事件中添加以下代码来启动服务端:
```csharp
using System.Net;
using System.Net.Sockets;
private Socket serverSocket = null;
private void btnStartServer_Click(object sender, EventArgs e)
{
try
{
// 设置IP地址和端口号
string ip = "127.0.0.1";
int port = 8888;
// 创建Socket对象
serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 绑定IP地址和端口号
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse(ip), port);
serverSocket.Bind(ipEndPoint);
// 开始监听客户端请求
serverSocket.Listen(10);
// 显示服务端状态
txtStatus.Text = "服务端已启动,等待客户端连接...";
}
catch (Exception ex)
{
MessageBox.Show("启动服务端出错:" + ex.Message);
}
}
```
3. 在Form的Load事件中添加以下代码来启动服务端:
```csharp
private void Form1_Load(object sender, EventArgs e)
{
// 启动服务端
btnStartServer_Click(sender, e);
}
```
4. 在Form的Closing事件中添加以下代码来关闭服务端:
```csharp
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// 关闭服务端
serverSocket.Close();
}
```
5. 在服务端启动后,使用Socket.Accept方法等待客户端连接:
```csharp
private void WaitForClient()
{
try
{
while (true)
{
// 等待客户端连接
Socket clientSocket = serverSocket.Accept();
// 处理客户端连接
ProcessClient(clientSocket);
}
}
catch (Exception ex)
{
MessageBox.Show("等待客户端连接出错:" + ex.Message);
}
}
```
6. 在ProcessClient方法中获取客户端的网络流并进行读写操作:
```csharp
private void ProcessClient(Socket clientSocket)
{
try
{
// 创建缓冲区
byte[] buffer = new byte[1024];
// 接收客户端消息
int length = clientSocket.Receive(buffer);
// 处理客户端消息
string message = Encoding.UTF8.GetString(buffer, 0, length);
// ...
// 发送响应消息
string response = "服务端已收到您的消息:" + message;
byte[] responseBuffer = Encoding.UTF8.GetBytes(response);
clientSocket.Send(responseBuffer);
// 关闭客户端连接
clientSocket.Shutdown(SocketShutdown.Both);
clientSocket.Close();
}
catch (Exception ex)
{
MessageBox.Show("处理客户端连接出错:" + ex.Message);
}
}
```
这样就可以使用WinForm创建TCP/IP服务端了,具体的读写操作可以根据实际需求进行实现。
阅读全文