- 论坛徽章:
- 1
|
构造三次握手最后一个ack带数据的socket代码,参考网上修改的,可以运行,并且验证成功。
- int main(int argc,char **argv)
- {
- int listenfd,connfd,opt=1;
- pid_t childpid;
- int i;
- socklen_t clilen;
- struct sockaddr_in servaddr;
- struct sockaddr_in realaddr;
- char GET[]="GET / HTTP/1.0\r\n\r\n";
- char msg[1024]={0};
-
- if (argc != 3) {
- printf("usage: %s serverip serverport\n", argv[0]);
- return 0;
- }
- if ((listenfd=socket(AF_INET,SOCK_STREAM,0))==-1)
- printf("socket error errno=%d", errno);
- opt = 1;
- setsockopt(listenfd, IPPROTO_TCP, TCP_DEFER_ACCEPT, &opt, sizeof(opt));
- bzero(&realaddr,sizeof(realaddr));
- realaddr.sin_family=AF_INET;
- realaddr.sin_port=htons(atoi(argv[2]));
- inet_pton(AF_INET,argv[1],&realaddr.sin_addr);
- if (connect(listenfd,(struct sockaddr*)&realaddr,sizeof(realaddr))==-1)
- printf("connect error errno=%d", errno);
-
- printf("ready to send\n");
- send(listenfd,GET,sizeof(GET),0);
- printf("Testing server\n");
- if(0 == recv(listenfd,msg,500,0))
- {
- printf("read fin\n");
- sleep(1);
- close(listenfd);
- }
-
- printf("Server is Standard\n");
-
- }
复制代码 |
|