现在的位置: 首页 > 综合 > 正文

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

2012年01月20日 ⁄ 综合 ⁄ 共 762字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.