<span style="color: #0000ff">int main(<span style="color: #0000ff">int argc,<span style="color: #0000ff">char <span style="color: #000000">argv[])
{
<span style="color: #0000ff">struct<span style="color: #000000"> sockaddr_in servaddr;
<span style="color: #0000ff">char<span style="color: #000000"> buf[MAXLINE];
<span style="color: #0000ff">int<span style="color: #000000"> sockfd,n;
<span style="color: #0000ff">char <span style="color: #000000">str;
</span><span style="color: #0000ff">if</span> (argc != <span style="color: #800080">2</span><span style="color: #000000">)
{
fputs(</span><span style="color: #800000">"</span><span style="color: #800000">usage: ./client messagen</span><span style="color: #800000">"</span><span style="color: #000000">,stderr);
exit(</span><span style="color: #800080">1</span><span style="color: #000000">);
}
str </span>= argv[<span style="color: #800080">1</span><span style="color: #000000">];
sockfd </span>= socket(AF_INET,<span style="color: #0000ff">sizeof</span><span style="color: #000000">(servaddr));
servaddr.sin_family </span>=<span style="color: #000000"> AF_INET;
inet_pton(AF_INET,</span><span style="color: #800000">"</span><span style="color: #800000">127.0.0.1</span><span style="color: #800000">"</span>,&<span style="color: #000000">servaddr.sin_addr);
servaddr.sin_port </span>=<span style="color: #000000"> htons(SERV_PORT);
</span><span style="color: #008000">//</span><span style="color: #008000"> 由于客户端不需要固定的端口号,因此不必调用 bind(),客户端的端口号由内核自动分配。
</span><span style="color: #008000">//</span><span style="color: #008000"> 注意,客户端不是不允许调用 bind(),只是没有必要调用 bind() 固定一个端口号,
</span><span style="color: #008000">//</span><span style="color: #008000"> 服务器也不是必须调用 bind(),但如果服务器不调用 bind(),内核会自动给服务器分配监听端口,
</span><span style="color: #008000">//</span><span style="color: #008000"> 每次启动服务器时端口号都不一样,客户端要连接服务器就会遇到麻烦。</span>
connect(sockfd,<span style="color: #0000ff">sizeof</span><span style="color: #000000">(servaddr));
write(sockfd,strlen(str));
n </span>=<span style="color: #000000"> read(sockfd,MAXLINE);
printf(</span><span style="color: #800000">"</span><span style="color: #800000">Response from server:n</span><span style="color: #800000">"</span><span style="color: #000000">);
write(STDOUT_FILENO,n);
printf(</span><span style="color: #800000">"</span><span style="color: #800000">n</span><span style="color: #800000">"</span><span style="color: #000000">);
close(sockfd);
</span><span style="color: #0000ff">return</span> <span style="color: #800080">0</span><span style="color: #000000">;
}
$ client.c -o client
$ ./client hello


listenfd = (== (n == - (n ==
(
(编辑:瑞安网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|