基于TCP服务端从零开始编写

这是一个简单的TCP服务器程序,使用Winsock库在Windows环境下实现。程序启动后,服务器将在9999端口进行监听,等待客户端连接。当有客户端连接时,服务器会显示客户端的IP地址和端口号,然后关闭连接。
摘要由CSDN通过智能技术生成
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include<iostream>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")

using namespace std;

int main() {
	WSADATA wsaData;
	WORD wsaVersion = MAKEWORD(2, 0);
	WSAStartup(wsaVersion, &wsaData);

	SOCKET serverSock = socket(AF_INET, SOCK_STREAM, 0);

	sockaddr_in addr;
	addr.sin_family = AF_INET;
	addr.sin_port = htons(9999);
	addr.sin_addr.S_un.S_addr = INADDR_ANY;

	bind(serverSock, (sockaddr*)&addr, sizeof(addr));

	listen(serverSock, 100);

	cout << "tcp server is listening at port 9999:" << endl;

	SOCKET clientSock;
	sockaddr_in clientaddr;
	int len = sizeof(sockaddr_in);

	while (true) {
		clientSock = accept(serverSock, (sockaddr*)&clientaddr, &len);

		if (INVALID_SOCKET != clientSock) {
			cout << "client:" << inet_ntoa(clientaddr.sin_addr) <<
				    " "<<clientaddr.sin_port<<" is connected!" << endl;

			closesocket(clientSock);
		}
	}

	closesocket(serverSock);
	WSACleanup();

	return 0;
}

运行程序,然后win+r输入cmd,打开命令行窗口,输入
telnet在这里插入图片描述
查看电脑ip地址
win+r输入cmd,打开命令行窗口,输入ipconfig 命令

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Winform Modbus TCP服务端的代码示例: ```csharp using System; using System.Net; using System.Net.Sockets; using System.Threading.Tasks; using System.Windows.Forms; namespace ModbusTcpServer { public partial class MainForm : Form { private TcpListener listener; private ModbusTcpServer modbusServer; public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { listener = new TcpListener(IPAddress.Any, 502); modbusServer = new ModbusTcpServer(); listener.Start(); Task.Run(() => ListenForClients()); } private async Task ListenForClients() { while (true) { var client = await listener.AcceptTcpClientAsync(); Task.Run(() => HandleClient(client)); } } private async Task HandleClient(TcpClient client) { try { var stream = client.GetStream(); while (client.Connected) { var request = await modbusServer.ReadRequest(stream); var response = modbusServer.HandleRequest(request); await modbusServer.WriteResponse(stream, response); } } catch (Exception ex) { Console.WriteLine("Error handling client: " + ex.Message); } finally { client.Close(); } } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { listener.Stop(); } } } ``` 这个示例使用了`ModbusTcpServer`类来处理Modbus TCP请求和响应。`ListenForClients`方法负责接受客户端连接,并使用`HandleClient`方法来处理每个连接。在`HandleClient`方法中,我们读取请求、处理请求并入响应。注意在`MainForm_FormClosing`事件中停止监听器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值