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 }