第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > c语言接受socket发送尾部有乱码 C语言socket编程 服务器和一个客户端连接时 服务器

c语言接受socket发送尾部有乱码 C语言socket编程 服务器和一个客户端连接时 服务器

时间:2024-01-24 03:48:52

相关推荐

c语言接受socket发送尾部有乱码 C语言socket编程 服务器和一个客户端连接时 服务器

新手刚刚接触这个,建立的是控制台的32位程序。

程序思路服务器监听,每次连接,创建一个进程,全权处理该客户端的通信(不用考虑资源浪费问题)。

服务器监听部分:

while (true)

{

sockConn = accept(sockSrv, (SOCKADDR*)&addrClient, &len);//每次有连接生成SOCKET

mj.sk = sockConn;//mj只是定义的一个结构变量,用来传递2个参数给新进程

mj.numb = n;//

_beginthread(process, 0, &mj);//生成新进程并且传递SOCKET给新线程

n++;//统计进程数,也就是客户端的序号

}

处理部分:

void process(void *lp)

{

Soksk *p = (Soksk*)lp;

SKT[p->numb].sk = p->sk;//SKT是全局变量用来保存不同客户端的SOCEKT,

char rcbf[50];

send(p->sk, "您已成功连接", 13, 0);//告诉客户端已经连接

while (1){

for (int i = 0; i < 50; i++) rcbf[i] = '\0';

if(recv(p->sk, rcbf, 50, 0)!=SOCKET_ERROR);//接受客户端消息,目测问题最大的地方、

printf("本次收到%s,from socket=%d",rcbf,p->sk);

}

客户端就是简单的发送了

while(1){

gets(sdbuf);

send(sockClient,sdbuf,49,0);

}

}

故障表现

1,就是一个客户端的时候发一个消息,RECV收到2次,另一个乱码,但至少不会丢失,每次都能收到。

2,2个以上客户端时出现,经常出现A发送不能收到,B发送一下,B的收到,A的也收到了,但B不发,A的消息永远不会收到。有时候B发了A的也收不到,然后乱按几下可能就是B的收不到,A的能收到了。

我的问题是:

1丶如何解决以上故障,再帮忙改个程序(本人用的VS)

2丶是因为客户端只有一个接受端口,或者缓冲区?影响了数据传输?,不应该啊,

3丶A发送消息服务器没收到。RECV依旧在阻塞状态,B一发送怎么A给收到了,不同线程下缓存文件不是不共享么,为什么2个客户端就会出现这个情况。

4丶希望越详细越好。

君之大恩,不胜感激!

c语言接受socket发送尾部有乱码 C语言socket编程 服务器和一个客户端连接时 服务器能正常收到信息 2个以上就出现BUG了...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。