(3)收发数据(sendto/recvfrom);
(4)关闭连接(closesocket)。
2.2 客户端原理
(1)创建套节字(socket);
(2)收发数据(sendto/recvfrom);
(3)关闭连接(closesocket)。
UDP 协议用于发送和接收数据的函数是 sendto 和 recvfrom。它们的原形如
下:
int sendto(
SOCKET s, //用于发送数据的套节字
Const char FAR *buf, //指向发送数据的缓冲区
int len, //要发送数据的长度
int flags, //一般指定为 0
//指向一个包含目标地址和端口号的 sockaddr_in 结构
const struct sockaddr * to,
int tolen); //为 socket_ in 的结构大小
同样 UDP 协议接收数据也需要知道通信对端的地址信息。
int recvfrom(SOCKET s,char FAR * buf,int len,int flags,struct sockaddr FAR *
from,int FAR* fromlen);
2.3 网络聊天室设计流程
该程序设计使用 Windows Sockets 编程。在数据传输协议中,我们使用 UDP
协议,UDP 协议是无连接的协议,在服务器端不调用 listen 函数进行监听,也
不调用 accept 函数建立连接, 其操作流程图如下图 3-2 所示:
首先,用 socket 函数建立套接字,然后根据本地的 IP 进行绑定,然后就可以通
过使用 send 函数和 reve 函数来进行数据的发送和接收了。
利用 C 语言编写 Windows 应用程序有两种方式:一种是 Windows C 编程方式,
另一种是 Visual C++编程方式。在一般情况下,Visual C++编程方式编写的程序
源代码量小、开发时的工作量小、工作难度也较小,但编译后的代码量较大,
运行速度略低;而 Windows C 编程方式编写的程序源代码量虽然较大,但可执
行代码效率高。随着技术的进步,Visual C++编程方式已被广泛采用,但象网
络编程等一些对速度要求高、对硬件操作较多的程序,大多数还是用 Windows