Linux下测试代码:

http://www.linuxhowtos.org/C_C++/socket.htm

TCP模型

 1 //TCPClient.c
 2 #include<string.h>
 3 #include<netinet/in.h>
 4 #include<sys/types.h>
 5 #include<sys/socket.h>
 6 #include<errno.h>
 7 #define MYPORT 4000
 8 #define BACKLOG 10
 9 #define MAX_LEN 100
10 
11 int main(void)
12 {
13     int sockfd;
14     int tmp_int;
15     char *msg_send = NULL;
16     char *msg_recv = NULL;
17     int sin_size;
18     int len,bytes_sent,bytes_recv;
19     struct sockaddr_in my_addr;
20     struct sockaddr_in dest_addr;
21     
22     sockfd=socket(AF_INET,SOCK_STREAM,0);
23     my_addr.sin_family=AF_INET;
24     my_addr.sin_port=htons(MYPORT);
25     my_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
26     bzero(&(my_addr.sin_zero),8);
27     tmp_int = connect(sockfd,(struct sockaddr*)(&my_addr),sizeof(struct sockaddr));
28     if( tmp_int < 0 )
29     {
30         printf("ERROR:connect erro %s!\n", strerror(errno));
31         close(sockfd);
32         return -1;
33     }
34     msg_send="This is TCPClient!\n";
35     len=strlen(msg_send);
36     bytes_sent=send(sockfd,msg_send,len,0);
37     while( len != bytes_sent )
38     {
39         tmp_int = bytes_sent;
40         len -= bytes_sent;
41         printf("send %d,%d packet!\n", bytes_sent,len);
42         bytes_sent = send( sockfd, msg_send+tmp_int, len, 0 );
43     }
44     msg_recv = (char *)malloc( MAX_LEN );
45     if( NULL == msg_recv )
46     {
47         printf("ERROR:malloc mem error!\n");
48         close(sockfd);
49         return -1;
50     }
51     memset(msg_recv, 0, MAX_LEN );
52     bytes_recv=recv(sockfd,msg_recv,MAX_LEN,0);
53     if( bytes_recv >0 )
54     {
55         printf("recv: %s\n!", msg_recv );
56     }
57     else
58     {
59         printf("ERROR:net error\n");
60     }
61     close(sockfd);
62     return 0;
63 }
View Code

相关文章: