
这个是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")
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)