您的位置:首页 > 编程语言

Socket编程的一些技巧收集[持续更新]

2009-07-31 23:05 471 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: