Socket编程的一些技巧收集[持续更新]
1.服务端和客户端编写的步骤
同步服务端:
初始化socket
创建IP、端口,并绑定
监听该socket
创建线程等待接受客户端连接
客户端连接,建立工作线程进行处理
关闭socket- 同步客户端:初始化socket
创建目标socket,IP、端口
进行连接
开启线程等待收发消息
关闭socket异步服务端:
初始化socket
创建IP、端口,并绑定
绑定窗口,并开始监听
等待在事件中接收、处理消息
关闭socket
异步客户端:
初始化socket
创建IP、端口,并绑定
绑定窗口,并连接服务端
等待在事件中接收、处理消息
关闭socket
注:以上大体上应该是这样,欢迎拍砖
2.发送结构体
拿结构体来进行服务端和客户端通信感觉挺好,以前都是拿字符串来进行一些控制什么的
下面给出代码:
先说发送方,首先定义结构体:
typedef struct _Test
{
int x;
int y;
char buff[32];
} Test,*pTest;
然后建立一个结构体对象,并填充数据:
Test t;
t.x = 18;
t.y = 20;
strcpy(t.buff,"abcdefg");
接着声明一个指向Test结构体的指针,并指向t:
pTest p;
p = &t;
接着发送
sendSock->SendTo(p,sizeof(Test),1990,"127.0.0.1");
注:我是用UDP自己发给自己的
关键部分就是结构体的大小要弄对,发送到时候,去内存读取结构体大小的字节,然后进行发送。如果读取内存的大小弄错了,是无法正常收取的。
下面说接收方:
首先定义用来接收字符串的数组
char buff[256];
接着接受:
Receive(buff,256);
然后再定义一个结构体指针,并强制转换成指针
pTest pt;
pt = (pTest)buff;
OK,完成
3.转字符串数组:
调用inet_ntoa