问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用c语言写个 socket tcp 的

发布网友 发布时间:2022-04-24 20:15

我来回答

1个回答

热心网友 时间:2022-04-07 09:33

#include <winsock2.h>
#include <stdio.h>
#include <pthread.h>
#pragma comment(lib,"ws2_32.lib")
typedef struct{
SOCKET a*t;
int lock;
}Arg;
void *transfer(void *arg)
{
Arg * info = (Arg *)arg;
SOCKET clientSock;
char recvbuf[102];
char sendBuf[] = "10";
int ret;
memcpy(&clientSock,(void*)&info->a*t,sizeof(clientSock));
info->lock =1;
while (TRUE)
{
ret = send(clientSock,sendBuf,2,0);
if (ret == -1)
{
break;
}
ret = recv(clientSock,recvbuf,102,0);
printf("%s\n",recvbuf);
}
return (void *)0;
}
void* timer(void *arg)
{
time_t last = time(NULL);
time_t now;
int i = 20;
while(i--)
{
now = time(NULL);
if(now - last == 1)
{
printf("1s past!\n");
last = now;
}
Sleep(500);
}
printf("timer exit.\n");
return (void *)0;
}
int main(void) {
WSADATA wsaData;
SOCKET ListenSocket;
SOCKADDR_IN service,client;
int len = sizeof(client);
Arg argument;
pthread_t tid;
char sendBuf[] = "ID=2;WHAT=host";
int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != NO_ERROR) {
printf("Error at WSAStartup()\n");
return 1;
}
ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ListenSocket == INVALID_SOCKET) {
printf("Error at socket(): %ld\n", WSAGetLastError());
WSACleanup();
return 1;
}
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr("127.0.0.1");
service.sin_port = htons(27115);
if (bind( ListenSocket,
(SOCKADDR*) &service,
sizeof(service)) == SOCKET_ERROR) {
printf("bind() failed.\n");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
if (listen( ListenSocket, 1 ) == SOCKET_ERROR) {
printf("Error listening on socket.\n");
closesocket(ListenSocket);
WSACleanup();
return 1;
}
argument.lock = 1;
printf("Waiting for client to connect...\n");
pthread_create(&tid,NULL,timer,NULL);
while(TRUE){
argument.a*t = accept( ListenSocket, (SOCKADDR*)&client, &len );
if (argument.a*t == INVALID_SOCKET) {
printf("accept failed: %d\n", WSAGetLastError());
closesocket(ListenSocket);
WSACleanup();
return 1;
} else {
printf("accept%s:%d\n",inet_ntoa(client.sin_addr),client.sin_port);
while (!argument.lock);
argument.lock = 0;
// sendto(argument.a*t,sendBuf,sizeof(sendBuf),0,(SOCKADDR*)&client,len);
pthread_create(&tid,NULL,transfer,&argument);
//send(AcceptSocket,sendBuf,sizeof(sendBuf),0);
}
}
// No longer need server socket
closesocket(ListenSocket);
WSACleanup();
return 0;
}

发送数据格式按需求。可以发送字符串,也可以发送结构体。如果发送结构体的话,要注意序列化和反序列化。程序例子是服务器对每个客户端的connect动作起一个线程去交互。还有一个线程是定时器。

追问我想些一个简单的计算器 就是客户端输入两个数字,然后服务器返回 都是int型的 加减乘除。这种情况应该怎么弄啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
长春小飞没有车没有房 碳钢的多久生锈 碳钢多久会生锈 碳钢多长时间会开始生锈 碳钢和铝哪个容易生锈 梦见天宫图是什么意思 光遇2023好友树解锁图鉴 光遇二级节点多少个 ...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 领淘通淘客助手这个软件怎么样? Unix端用C语言,windows端用C#,如何完成TCP/IP通信? 求一C语言写的tcp程序的源码,程序越简单越好,C++也可以,最好带注释 怎么用C语言写三次握手协议? 心跳包。如何发送TCP空帧的心跳包,它的格式是什么?最好用c语言实现,因为我是在ARM上实现tcp协议 C语言编写TCP的文件传输 TCP/IP协议和C语言编程有关系吗?有什么关系? 如何用C语言实现局域网内一台计算机向服务器发送信息(比如说字符串),要通过TCP协议。 服务器端运行的文件使用哪种语言编写的?另外TCP&#47;IP协议的实现是用C语言写的吗? C语言实现socket编程TCP通信的问题? 求C语言下的TCP/IP协议的工作流程图 求C语言高手,实现一个简单的TCPIP程序以实现两台计算机之间的聊天通信, Windows系统用C语言写TCP通信 modbus tcp 协议的c语言怎么写 C语言实现TCP/IP协议,是否有学习的意义 怎样学习编程开发,用C#实现基于TCP协议的网络通讯 怎样用c语言或者c++实现tcp,并实现文本传输 什么样的软件才适合用自动化工具进行测试? 软件自动化测试工具有哪些?都有什么优缺点? 自动化测试工具哪些经常用到? 要做软件测试工程师,必须自动化测试吗? 自己用C语言构造数据包,实现TCP三次握手过程,为什么中间会产生一个RST信号? 软件自动化测试工程师的从业要求 大家认为男生扁头好看还是圆头好看?? 实体店手机分期付款需要什么条件 圆头扁头对比是什么? 何为中央空调 圆头扁头对比是怎么样的? 扁头好看还是圆头好看?女生喜欢扁头的男生还是圆头的?? 扁头好看还是圆头好看?(对于我们人类) 有人在实体店分期付款买过手机吗?流程是什么?需要带什么证件? 睡“扁头”与“圆头”的孩子,长大后有哪些差别呢? 扁头和圆头的宝宝哪种更聪明? 手机店所谓的分期付款需要什么条件 需要抵押吗? 圆头好还是扁头好? 10.2.170.55的网络地址和主机地址分别是什么? 做人讲诚信,人品很重要的句子有哪些? 形容老板为人好的句子 为人真诚善良的好句 夸赞人品好的句子? 表扬人品好的话