MFC中基于UDP编写一个简单的聊天室程序,其中在获取对方IP地址时有这么一句:

MFC中基于UDP编写一个简单的聊天室程序,其中在获取对方IP地址时有这么一句:,第1张

GetDlgItem(IDC_IPADDRESS1))是获取控件ID为IDC_IPADDRESS1的句柄

这个是MFC里的IP控件,调用GetAddress,取得IP地址,然后强转成CIPAddressCtrl*指针类型。

这是资料 看不懂可以问。。。正在mfc中

#include <windows.h>

#pragma comment(lib, "ws2_32.lib")

int do_listen(const int port, const int bTcp)

{

struct sockaddr_in hmemset(&h, 0, sizeof(h))

h.sin_family = AF_INETh.sin_port = htons(port)

h.sin_addr.s_addr = INADDR_ANY

int s = socket(AF_INET, bTcp?SOCK_STREAM:SOCK_DGRAM, 0)

if (s <1) { nperror("socket(listen)")return 0}

int o = 1

int r = setsockopt(s, SOL_SOCKET,SO_REUSEADDR, (char *)&o, sizeof(int))

if (r == -1) { nperror("setsockopt(listen)")return 0}

r = bind(s, (struct sockaddr *)&h, sizeof(h))

if (r == -1) { nperror("bind(listen)")return 0}

if (bTcp) {

r = listen(s, SOMAXCONN)

if (r == -1) { nperror("listen()")return 0}

}//end if

#ifndef WIN32

signal(SIGPIPE, SIG_IGN)

#endif

return s

}//end do_listen

使用上面的函数int s = do_listen(port, 0)然后循环使用recvfrom就可以收UDP包了(服务器),发送UDP包更简单(无论服务器还是客户机):

struct CMyPacket {

int data

char dat[1024]

} packet

sendto(s, &packet, sizeof(packet), 0, (sockaddr *)&address, sizeof(address))

其中address的定义:

sockaddr_in address

address.sin_family = AF_INETaddress.sin_port = htons(port)

address.sin_s_addr = inet_addr("服务器地址,比如192.168.1.111")


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7763687.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存