Linux C 网络编程——4. 简单TCP Socket程序
根据图中的流程,实现一个最简单的TCP程序。
功能:发送一个字符串给服务器
/* ============================================================================ Name : SimpleSockTCPServer.c Author : wistone Version : Copyright : 2012 - 2015 Description : Simple Socket Server ============================================================================ */#include <stdio.h>#include <stdlib.h>#include <arpa/inet.h>#include <sys/socket.h>int main( int argc , char ** argv ){struct sockaddr_in saddr, caddr;char buf[100] ;char str[100] ;int listenfd, connfd;int addr_len;listenfd = socket( AF_INET, SOCK_STREAM, 0 );memset ( &saddr, 0, sizeof(saddr) );memset( buf, 0, 100 );memset( buf, 0, 100 );saddr.sin_family = AF_INET;saddr.sin_port = htons( 8001 );saddr.sin_addr.s_addr = htonl( INADDR_ANY ); //any addressbind( listenfd, (struct sockaddr *)&saddr, 16 );listen( listenfd, 20 );printf( "Accepting connections ... \n" );int i, n;while(1){addr_len = sizeof( caddr );connfd = accept( listenfd, (struct sockaddr*)&caddr, &addr_len );//n = read( listenfd, buf, 100 );n = recv( listenfd, buf, 100, 0 );printf("Recive from %s : %d \n", inet_ntop( AF_INET, &caddr.sin_addr, str, sizeof(str) ), ntohs(caddr.sin_port) );for(i=0; i<n; i++){buf[i] = toupper( buf[i] );}//write( connfd, buf, n+1 );send( connfd, buf, n+1, 0 );printf("Send : %s \n", buf);close( connfd );}return 0;}
3. 参考
[1] Linux C编程一站式学习
[2] Linux 网络编程