TCP编程模型
文章目錄
- 1 TCP編程模型
1 TCP編程模型
先來看一下socket整體框架圖:
如下為TCP通信模型:
TCP客戶端和服務(wù)器示例代碼:
demo_tcp_server.c:
demo_tcp_client.c:
#include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> //#include <Windows.h> #include <pthread.h> #include <malloc.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h>#include <netdb.h>#include <sys/time.h>#include <signal.h>int sockfd;//#define SERVER_IP "106.13.62.194" #define SERVER_IP "127.0.0.1"#define SERVER_PORT 6666void printf_hex(char *buf, int len) {int i;for(i = 0; i < len; i++){printf("0x%x ", buf[i]);}}int main(void) {char command[1024];char *str;/* 連接者的主機(jī)信息 */struct sockaddr_in their_addr; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){/* 如果socket()調(diào)用出現(xiàn)錯(cuò)誤則顯示錯(cuò)誤信息并退出 */perror("socket"); // exit(1);}/* 主機(jī)字節(jié)順序 */their_addr.sin_family = AF_INET;/* 網(wǎng)絡(luò)字節(jié)順序,短整型 */their_addr.sin_port = htons(SERVER_PORT);their_addr.sin_addr.s_addr = inet_addr(SERVER_IP);/* 將結(jié)構(gòu)剩下的部分清零*/bzero(&(their_addr.sin_zero), 8);if(connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1){/* 如果connect()建立連接錯(cuò)誤,則顯示出錯(cuò)誤信息,退出 */perror("connect");exit(1);}ssize_t ret;char recvbuf[512];char *buf = "hello! I'm client!";while(1){if((ret = send(sockfd, buf, strlen(buf) + 1, 0)) == -1){perror("send : ");}sleep(2);if((ret = recv(sockfd, &recvbuf, sizeof(recvbuf), 0)) == -1){return -1;}printf("recv :\r\n");printf("%s", recvbuf);printf("\r\n");sleep(2);}close(sockfd);return 0; }參考資料:
總結(jié)
- 上一篇: 新福克斯2015款自动l.6L三厢怎么取
- 下一篇: 设计回顾