大家好,最近用VC中socket编程:其中bind有问题,这涉及到,同一个socket地址(包括IP地址和端口号),能否被两个socket榜定阿?
代码如下:
soc_host.sin_family=AF_INET;
soc_host.sin_addr.s_addr=inet_addr ("199.10.10.203");
soc_host.sin_port=htons(5010);
//
soc_host1.sin_family=AF_INET;
soc_host.sin_addr.s_addr=inet_addr ("199.10.10.203");
soc_host1.sin_port=htons(5011);// 若=5010 ,则下面的第二个bind() 会出错!!!
//send 和receive 用了同一个结构。
soc_s=socket(AF_INET,SOCK_DGRAM,0);
soc_r=socket(AF_INET,SOCK_DGRAM,0);
if ((soc_s = socket (AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET )
{
return (0);
}
if ((soc_r = socket (AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET )
{
//perror ("socket");
//WSAGetLastError()
}
if (bind(soc_s, (struct sockaddr *)&soc_host, sizeof(soc_host)) != 0)
{
perror("bind");
closesocket (soc_s);
return (0);
}
if (bind(soc_r, (struct sockaddr *)&soc_host1, sizeof(soc_host1)) != 0)
// 若soc_host.sin_port=htons(5010);
soc_host1.sin_port=htons(5010)则就出错!! 可是我明明看见别人 用了相同的socket地址(包括IP地址和端口号,来bind两个socket。????为什么阿???
{
perror("bind");
closesocket (soc_r);
return (0);
}
另外,想问一下,UDP是双全共的吗,我可以用一个socket,来既接受数据 又发送数据吗。