Linux sokcet客户端

//Client端 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <netdb.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <unistd.h> #define SERVERPORT 3333 #define MAXDATASIZE 100//每次最大数据传输量 int main(int argc, char *argv[]) { int sockfd, recvbytes; char buf[MAXDATASIZE]; struct hostent *host; struct sockaddr_in serv_addr; if(argc < 2) { fprintf(stderr,"please enter the server's hostname/n"); exit(1); } host = gethostbyname(argv[1]); sockfd = socket(AF_INET, SOCK_STREAM, 0); serv_addr.sin_family=AF_INET; serv_addr.sin_port = htons(SERVERPORT); serv_addr.sin_addr=*((struct in_addr *)host->h_addr); bzero(&(serv_addr.sin_zero),8); connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)); /** * 面向连接的客户程序使用connect函数来配置socket并与远端服务器建立一个TCP连接 * int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); * serv_addr:包含远端主机IP地址和端口号的指针 * addrlen:struct sockaddr的数据结构的长度 * 成功返回0,失败返回-1 * */ recvbytes=recv(sockfd, buf, MAXDATASIZE, 0); /** * 数据接收 * int recv(int sockfd, void *buf, unsigned int flags); * buf:存放接收数据的缓冲区 * len:缓冲区的长度 * flags:一般设置为0 * * recv返回实际接收的字节数,失败返回-1 */ buf[recvbytes] = '/0'; printf("收到:%s",buf); close(sockfd); }  

你可能感兴趣的:(数据结构,linux,Stream,struct,socket,server)