读书人

容易的tcp通讯

发布时间: 2012-08-15 16:57:17 作者: rapoo

简单的tcp通讯

简单的tcp通讯例子。

?

server端

?

/* tcp_server.c */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#define MYPORT 8000int main(){    int server_fd, client_fd;    struct sockaddr_in my_addr, client_addr;    server_fd = socket(AF_INET, SOCK_STREAM, 0);    my_addr.sin_family = AF_INET; /* 主机字节序 */    my_addr.sin_port = htons(MYPORT); /* short, 网络字节序 */    my_addr.sin_addr.s_addr = inet_addr("127.0.0.1");    bzero(&(my_addr.sin_zero), 8); /* zero the rest of the struct */    bind(server_fd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr));    listen(server_fd, 10);    while (1) {        char buf[20];        printf("server is waiting\n");        int client_len = sizeof(struct sockaddr);        client_fd = accept(server_fd, (struct sockaddr*)&client_addr, &client_len);        printf("accepted\n");        int n = recv(client_fd, buf, 20, 0);        printf("received from client %s\n", buf);        for (int i=0; i<n; i++) {            if (buf[i]>=97 && buf[i]<=122) {                buf[i] -= 32;            }        }        send(client_fd, buf, 20, 0);        close(client_fd);    }    close(server_fd);    return 0;}

?

client端

?

/* tcp_client.c */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>int main(){        int client_fd;        struct sockaddr_in server_addr;        server_addr.sin_family = AF_INET;        server_addr.sin_port = htons(8000);        server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");        bzero(&(server_addr.sin_zero), 8);        client_fd = socket(AF_INET, SOCK_STREAM, 0);        connect(client_fd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr));        send(client_fd, "hello\0", 6, 0);        char buf[20];        bzero(buf, 20);        recv(client_fd, buf, sizeof(buf), 0);        printf("recv %s\n", buf);        close(client_fd);        return 0;}
?

?

读书人网 >互联网

热点推荐