c语言linux TCP长连接 socket收发范例 断开自动重连
生活随笔
收集整理的這篇文章主要介紹了
c语言linux TCP长连接 socket收发范例 断开自动重连
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文鏈接:https://blog.csdn.net/chenhao0568/article/details/103420615
c語言linux TCP長連接 socket收發范例 斷開自動重連
改進1:加入接收超時。可以做別的事,等有接收才響應
阻塞
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <assert.h> #include <string.h> #include <netinet/in.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #define IP "192.168.1.127" #define PORT 3031int tcp() {printf("\n\n**********TCP開始連接%s:%d\n", IP, PORT);int sockfd = socket(AF_INET, SOCK_STREAM, 0);if (sockfd < 0){printf("socket創建失敗:%d\n", sockfd);close(sockfd);sleep(1);return -1;}// printf("socket創建成功:%d\n", sockfd);struct sockaddr_in ser;memset(&ser, 0, sizeof(ser));ser.sin_family = AF_INET;ser.sin_port = htons(PORT);ser.sin_addr.s_addr = inet_addr(IP);int res = connect(sockfd, (struct sockaddr *)&ser, sizeof(ser));if (res < 0){printf("socket連接失敗:%d\n", res);close(sockfd);sleep(1);return -1;}printf("socket連接成功:%d\n", res);while (1){//發送//printf("please input:");fflush(stdout);char buff[128] = "1234";//fgets(buff, 128, stdin);//buff[strlen(buff) - 1] = 0;if (strcmp(buff, "end") == 0) //end正常退出{close(sockfd);printf("end正常退出socket\n");return 0;}int sendret = send(sockfd, buff, strlen(buff), 0);if (sendret < 0){printf("socket發送失敗:%d (0服務端斷開,-1網絡故障)\n", sendret);close(sockfd);return -1;}printf("socket發送成功:%d,內容:%s\n", sendret, buff);//接收char recvbuff[128] = {0};printf("socket接收等待中\n");int recvret = recv(sockfd, recvbuff, 127, 0);if (recvret <= 0){printf("socket接收失敗:%d (0服務端斷開,-1網絡故障)\n", recvret);close(sockfd);return -1;}printf("socket接收成功:%d,內容:%s\n", recvret, recvbuff);} } int main() {while (1){tcp();} }總結
以上是生活随笔為你收集整理的c语言linux TCP长连接 socket收发范例 断开自动重连的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows 下安装 MySQL 及使
- 下一篇: fgui实现刮刮乐