socket服务器端出现乱码

cbest2014 2014-01-20 01:42:31
我对服务器端进行了封装,可是服务器一开,就收到几行消息是乱码,后面的发送接收都没问题,不知道问题出在哪了,前几天 测试还是好好的,求指教。。。。。。
代码如下:
#include "StdAfx.h"
#include "Server_test.h"
#define MSGSIZE 1024 //收发缓冲区的大小
#pragma comment(lib, "ws2_32.lib") //链接静态库

DWORD WINAPI FunThread(LPVOID); //创建一个线程,专门用来接收数据
SOCKET sClient; //连接所用套节字
SOCKET sListen; //监听套接字
SOCKADDR_IN client; //保存客户的地址信息
int iaddrSize = sizeof(SOCKADDR_IN);
Server_test::Server_test(int iPort)
{
WSADATA wsaData;
SOCKADDR_IN local;
char s_Message[MSGSIZE]; //收发缓冲区
WSAStartup(0x0202, &wsaData); //Initialize Windows socket library
sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//创建服务器监听套节字。TCP协议

local.sin_family = AF_INET; //AF_INET指明使用TCP/IP协议族

local.sin_port = htons(iPort);//指明连接服务器的端口号
local.sin_addr.s_addr = htonl(INADDR_ANY);//自动获取本机地址
bind(sListen, (struct sockaddr *)&local, sizeof(SOCKADDR_IN));//地址绑定到套接字
listen(sListen, 1);//开始监听
sClient = accept(sListen, (struct sockaddr *)&client, &iaddrSize);//建立连接
printf("Accepte client:%s:%d\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port));
}
int Server_test::SendClient()
{
while (TRUE)
{
printf("发送消息:"); //从键盘输入
gets(buf_s); // 发送数据
send(sClient, buf_s, strlen(buf_s), 0);
}
return 0;
}
int Server_test::recievedClient()
{
char c_Message[MSGSIZE]={}; //收发缓冲区

int ret; //接收字节的个数
while (TRUE)
{
ret = recv(sClient, c_Message, MSGSIZE, 0);//接收数据
if(ret==SOCKET_ERROR)
{
printf("\n客户端已关闭!");
sClient = accept(sListen, (struct sockaddr *)&client ,&iaddrSize);
//重新开始监听
printf("\nAccepte new client:%s:%d", inet_ntoa(client.sin_addr), ntohs(client.sin_port));
memset(c_Message,0,1024); // 将原来的 client message 归零
continue;
}
printf("\n收到消息: %s\n", c_Message);
//方法2把缓冲区数据清空,以便重新赋值
memset(c_Message,0,1024);
}
return 0;
}
...全文
116 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cbest2014 2014-01-20
  • 打赏
  • 举报
回复
问题已经解决了,这里不是 截断的问题,是我客户端的send在输入之前就发了一次,所以出现乱码,也怪我在写错误的时候不谨慎
羽飞 2014-01-20
  • 打赏
  • 举报
回复
楼主看下每次发送的长度跟接收的长度是否一样的 TCP,每次调用send发送的字节不一定等于recv每次接收的字节,可能会被截断

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧