在看windows 网络编程第二版的时候看到的
绑定的地方不是很明白,感觉好像书上写错了
是不是应该绑定为 bind(ReceivingSocket, (SOCKADDR *)&ReceiverAddr, sizeof(ReceiverAddr));
那个SenderAddr地址结构是由recvfrom来填充的哦?#include <winsock2.h>void main(void)
{
WSADATA wsaData;
SOCKET ReceivingSocket;
SOCKADDR_IN ReceiverAddr;
int Port = 5150;
char ReceiveBuf[1024];
int BufLength = 1024;
SOCKADDR_IN SenderAddr;
int SenderAddrSize = sizeof(SenderAddr);
// Initialize Winsock version 2.2 WSAStartup(MAKEWORD(2,2), &wsaData);
// Create a new socket to receive datagrams on.
ReceivingSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // Set up a SOCKADDR_IN structure that will tell bind that we
// want to receive datagrams from all interfaces using port
// 5150. ReceiverAddr.sin_family = AF_INET;
ReceiverAddr.sin_port = htons(Port);
ReceiverAddr.sin_addr.s_addr = htonl(INADDR_ANY); // Associate the address information with the socket using bind. bind(ReceivingSocket, (SOCKADDR *)&SenderAddr, sizeof(SenderAddr)); // At this point you can receive datagrams on your bound socket.
recvfrom(ReceivingSocket, ReceiveBuf, BufLength, 0,
(SOCKADDR *)&SenderAddr, &SenderAddrSize); // When your application is finished receiving datagrams close
// the socket. closesocket(ReceivingSocket); // When your application is finished call WSACleanup. WSACleanup();
}
绑定的地方不是很明白,感觉好像书上写错了
是不是应该绑定为 bind(ReceivingSocket, (SOCKADDR *)&ReceiverAddr, sizeof(ReceiverAddr));
那个SenderAddr地址结构是由recvfrom来填充的哦?#include <winsock2.h>void main(void)
{
WSADATA wsaData;
SOCKET ReceivingSocket;
SOCKADDR_IN ReceiverAddr;
int Port = 5150;
char ReceiveBuf[1024];
int BufLength = 1024;
SOCKADDR_IN SenderAddr;
int SenderAddrSize = sizeof(SenderAddr);
// Initialize Winsock version 2.2 WSAStartup(MAKEWORD(2,2), &wsaData);
// Create a new socket to receive datagrams on.
ReceivingSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // Set up a SOCKADDR_IN structure that will tell bind that we
// want to receive datagrams from all interfaces using port
// 5150. ReceiverAddr.sin_family = AF_INET;
ReceiverAddr.sin_port = htons(Port);
ReceiverAddr.sin_addr.s_addr = htonl(INADDR_ANY); // Associate the address information with the socket using bind. bind(ReceivingSocket, (SOCKADDR *)&SenderAddr, sizeof(SenderAddr)); // At this point you can receive datagrams on your bound socket.
recvfrom(ReceivingSocket, ReceiveBuf, BufLength, 0,
(SOCKADDR *)&SenderAddr, &SenderAddrSize); // When your application is finished receiving datagrams close
// the socket. closesocket(ReceivingSocket); // When your application is finished call WSACleanup. WSACleanup();
}
解决方案 »
- 串口通讯也分客户端和服务器吗?
- 能不能把javascript做好的东西嵌入到MFC对话框应用程序中?
- 初学windows编程的问题:为什么close以后进程却还在,cpu占有率100%?
- _RecordsetPtr 如何进行排序的问题(应该很难,分不多,只想听听大家的看法)
- 如何将一个含有回车的字符串存入Informix的varchar2类型的字段?
- 问题: Window如何改为不可见?只在后台运行。
- 98DDK里面带的那个Packet怎么编译?
- dcom和socket是TCP/IP协议中那一层的规范
- 请问如何在vc++中嵌入flash动画,或gif动画?谢谢。
- 【求 困扰好多天了】C svchost服务安装失败 显示 正在启动!
- 对GridCtrl熟悉的来帮个忙,多谢了
- 能否保证一个线程里的函数要么执行完成,要么还没有执行
而只有connect才用于与对方地址连接的。