【发布时间】:2015-06-17 00:43:29
【问题描述】:
我是 TCP 套接字编程的初学者。我想澄清一些关于 TCP 编程概念的疑问。我有一个客户端和服务器程序。这是我的 C 代码。 服务器代码:
#define MYPORT 39937
struct sockaddr_in serveraddress,cliaddr;
sd = socket( AF_INET, SOCK_STREAM, 0 );
memset( &serveraddress, 0, sizeof(serveraddress) );
serveraddress.sin_family = AF_INET;
serveraddress.sin_port = htons(MYPORT);//PORT NO
serveraddress.sin_addr.s_addr = htonl(INADDR_ANY);//ADDRESS
retbind=bind(sd,(struct sockaddr*)&serveraddress,sizeof(serveraddress));
connfd=accept(sd,(struct sockaddr*)&cliaddr,&len);
客户端代码:
struct sockaddr_in serveraddress;
sd = socket( AF_INET, SOCK_STREAM, 0 );
argv[1]//for ip address
argv[2]//for port
argv[3]//for string to send
memset( &serveraddress, 0, sizeof(serveraddress) );
serveraddress.sin_family = AF_INET;
serveraddress.sin_port = htons(atoi(V[2]));//PORT NO
serveraddress.sin_addr.s_addr = inet_addr(V[1]);//ADDRESS
if(connect(sd,(struct sockaddr*)&serveraddress,
sizeof(serveraddress)) < 0)
{
printf("Cannot Connect to server");
exit(1);
}
write(sd, V[3], strlen(V[3]));
我知道客户端程序初始化了服务器的端口和 IP 地址。是真的吗?如果是真的那么为什么我们在服务器程序中使用端口和 IP 地址? 我很迷惑 。另一个问题为什么我们不在客户端程序中使用客户端端口和 IP 地址?服务器如何识别客户端机器的这个端口和地址?请解释有关服务器和客户端的整个概念
【问题讨论】:
-
你基本上是在问 TCP 是如何工作的。你为什么不先读一本关于它的书。