为什么需要修正
结构化消息
这里是指使用结构体传输数据。
需要考虑字节序对齐,如果客户端和服务器编程语言相同,且在同一环境下,通常字节是相同的,但是可能存在字节长度不一致而导致消息传输与接收不一致的额情况发生。
新增内容
- 利用结构体一次性传输结构化的消息。
服务器整体代码
#define WIN32_LEAN_AND_MEAN
#define SOCKET int //VS2015已经定义好的,可以直接用
#include<WinSock2>
#include<windows.h>
#include<iostream>
#include<string.h>
struct DataPackage //以最简单的情形为例,可以依据实际工程需求做自定义定制。
{
int age;
char name[32];
};
int main()
{
WORD ver = MAKEWORD(2,2);//调用API2代创建2.x版本
WSADATA dat;
WSAStartup(ver,&dat);//启动
//创建套接字
SOCKET seradd =socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//bind
SOCKADDR_IN _sin = {
};
_sin .sin_family = AF_INET;
//sin_port和sin_addr都必须是网络字节序(NBO),一般可视化的数字都是主机字节序。所以需要转换host to net unsigned.数字可改
_sin .sin_port = htons(1234);
_sin.sin_addr_s_un.S_addr = INADDR_ANY;//访问本机任何网络地址都可以,具体也可以改为本机的某个特定地址
if (SOCKET_ERROR == bind(seradd , (sockaddr *) &_sin , sizeof(_sin)</