简单的TCP服务器代码

本文介绍了如何创建一个简单的TCP服务器,包括处理客户端连接、接收消息和断开连接的步骤,是理解TCP通信基础的好起点。
摘要由CSDN通过智能技术生成
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <WinSock2.h>
#include <windows.h>
#include <iostream>
#pragma comment(lib,"ws2_32")
using namespace std;
int main(int argc, char* argv[])
{
	//init socket
	WSADATA stData = { 0 };
	WORD dVer = MAKEWORD(2, 2);
	if(WSAStartup(dVer, &stData))
	{
		cout << "init fail" << endl;
		return -1;
	}

	SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (sock == INVALID_SOCKET)
	{
		cout << "socket fail" << endl;
		return -1;
	}

	sockaddr_in stAddr = { 0 };
	stAddr.sin_family = AF_INET;
	stAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
	stAddr.sin_port = htons(9999);
	if (bind(sock, (sockaddr*)&stAddr, sizeof(sockaddr_in))==SOCKET_ERROR)
	{
		cout << "bind fail" << endl;
		return -1;
	}

	if (listen(sock, SOMAXCONN) == SOCKET_ERROR)
	{
		co
以下是一个C#的ModbusTCP服务器代码示例: ```csharp using System; using System.Net; using System.Net.Sockets; using System.Threading; using HslCommunication.ModBus; using HslCommunication.Core.Net; using HslCommunication.Core; class Program { static void Main(string[] args) { // 连接西门子PLC bool siemensConn = siemensS7.Connect("192.168.1.200", CPU_Type.S71200, 0, 0); if (siemensConn) { Console.WriteLine("西门子PLC连接成功"); } else { Console.WriteLine("西门子PLC连接失败"); } // 创建ModbusTCP服务器 bool slaveConn = false; try { TcpListener tcpListener = new TcpListener(IPAddress.Parse("127.0.0.1"), 502); ModbusTcpSlave modbusTcpSlave = ModbusTcpSlave.CreateTcp(1, tcpListener); modbusTcpSlave.Listen(); slaveConn = true; Console.WriteLine("ModbusTCP服务开启成功"); } catch (Exception ex) { slaveConn = false; Console.WriteLine("ModbusTCP服务开启失败:" + ex.Message); } // 西门子PLC连接成功且ModbusTCP服务器创建成功 if (siemensConn && slaveConn) { while (true) { // 读取PLC的数据,写入到ModbusTCP里 float value = Convert.ToSingle(siemensS7.Read("DB1.DBD0", VarType.Real)); // 显示出来 Console.WriteLine("读取数据:" + value); // 写入Modbus服务器 SetFloatValue(1, value); Thread.Sleep(500); } } Console.ReadLine(); } } ``` 你可以从以下链接下载ModbusTCP服务器的软件代码:[https://github.com/dathlin/HslCommunication/raw/master/Download/ModbusTcpServer.zip](https://github.com/dathlin/HslCommunication/raw/master/Download/ModbusTcpServer.zip)。该地址的服务器软件是最新的,并且会不断更新。 如果你想读取或写入离散量,可以使用以下代码示例: ```csharp // 读取地址100的离散量 bool value_100 = busTcpServer.ReadDiscrete("100"); // 读取地址100-109的离散量 bool[] value_100_109 = busTcpServer.ReadDiscrete("100", 10); // 写入地址100的离散量为true busTcpServer.WriteDiscrete("100", true); // 写入地址100-101的离散量为true busTcpServer.WriteDiscrete("100", new bool[] { true, true }); ``` 希望这些代码能够帮助到你。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [基于C#开发ModbusTCP服务器实现数据接口](https://blog.csdn.net/xiketangAndy/article/details/120866573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [C# 开发ModBus的服务器程序 实现ModBus数据总站 搭建自定义的Modbus服务器 同时支持tcp和rtu...](https://blog.csdn.net/weixin_30764771/article/details/95071856)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值