Linux Socket网络通信示例
生活随笔
收集整理的這篇文章主要介紹了
Linux Socket网络通信示例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
記錄一下Linux 網絡通信編程示例,主要用內網穿透和網絡調試助手進行調試。
1、源文件:
#include <stdlib.h> #include <sys/types.h> #include <stdio.h> #include <netinet/in.h> #incldue <string.h> //bzero #include <arpa/inet.h> //inet_addr#define MSG printfint main() {int recbytes;int sin_size;char buffer[1024] = {0};struct sockaddr_in s_add,c_add;MSG("INFO: socket thread...\r\n");sock_id = socket(AF_INET,SOCK_STREAM,0);if(-1 == sock_id){MSG("INFO: socket fail !\r\n");return -1;}MSG("INFO: socket success !\r\n");bzero(&s_add,sizeof(struct sockaddr_in));s_add.sin_family = AF_INET;s_add.sin_addr.s_addr = inet_addr("94.191.70.63");//上述IP地址是我的服務器IP,可以用花生殼,NAT123等內網穿透軟件s_add.sin_port = htons(18677);//設置的服務器端口//connect to serv with block modeif(-1 == connect(sock_id,(struct sockaddr*)(&s_add),sizeof(struct sockaddr))){MSG("INFO: connect to serv fail !\r\n");return -1;}MSG("INFO: connect to serv success \r\n");while (1) {if(-1 != (recbytes = read(sock_id,buffer,1024))){buffer[recbytes] = '\0';MSG("INFO:Rx serv data:%s\r\n",buffer);memset(buffer,0,1024);}if(fgets( buffer, 1024, stdin ) != NULL){write( sock_id, buffer, strlen(buffer));}} }2、編譯運行
gcc socket_linux.c -o main服務器接收和發送:
linux發送和接收:
3、內網穿透是怎么一回事?
linux編寫的socket網絡通信程序需要訪問IP和端口,這個IP和端口一定是公網、外網,不是局域網的192.168.1.X這種,因此在調試網絡通信代碼,測試數據發送時需要有公網IP作為服務器,接收我們程序發起的連接。
簡單來說有兩種方式構建服務器,1:購買阿里云、騰訊云、華為云等服務器,自己開服務,開端口和防火墻設置,并運行相應服務器代碼,接收開發的socket連接并執行相應響應。2:內網穿透,不用搭建服務器,自己電腦安裝一個內網穿透軟件,由該軟件提供一個外部公網IP,然后自己電腦再創建一個服務器,用普通的網絡調試軟件即可。
內網穿透怎么配置:首先在電腦打開網絡調試助手,創建一個服務器,設置服務器端口為PORT1;接著打開內網穿透軟件,創建一個公網服務(具有公網網址和公網端口PORT2),并綁定電腦的IP地址(用ADDR1表示,可以上網的地址)和PORT1端口;然后將內網穿透軟件的外網服務網址找出來,轉換成IP地址(用ADDR2表示);最后在程序中用ADDR2和PORT2這個IP和端口來對接,所有收發數據都可以傳輸到電腦的網絡調試助手中。
?
?
?
總結
以上是生活随笔為你收集整理的Linux Socket网络通信示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从SEO的角度,如何打造非专业领域内容?
- 下一篇: linux iptables配置