C 實現區域網雙向通訊(socket)

2021-08-15 10:52:14 字數 2262 閱讀 8652

如果想要實現兩不同區域網之間的主機程序通訊,即實現區域網內兩個電腦之間的資料傳輸,那麼就不能通過管道或者命名管道的方式來實現,這裡的區域網通訊是通過一種叫做socket套接字的方式來實現。

首先想要與同一區域網內部的另乙個電腦進行資料傳輸,需要知道它的ip位址,因為ip是連線網路之後分配給個人主機的唯一標識,所以先找到想要建立連線的主機的位址,然後我們雙方共同約定乙個類似於管道的唯一出入口(也就是埠號port),這裡的埠號一般分為公認埠號和註冊埠號,約定好埠號傳輸的時候雙方都需要遵守共同的網路協議(tcp(sock_stream),udp(sock_dram),icmp(sock_raw))。

公認埠號:知名埠即眾所周知的埠號,範圍從0到1023,這些埠號一般固定分配給一些服務。比如21埠分配給ftp(

檔案傳輸協議

)服務,25埠分配給smtp(

簡單郵件傳輸協議

)服務,80埠分配給http服務,135埠分配給rpc(

遠端過程呼叫

)服務等等

註冊埠號:埠號從1025到49151。它們鬆散地繫結於一些服務。也是說有許多服務繫結於這些埠,這些埠同樣用於許多其他目的。這些埠多數沒有明確的定義服務物件,不同程式可根據實際需要自己定義,如後面要介紹的遠端控制軟體和木馬程式中都會有這些埠的定義的。記住這些常見的程式埠在木馬程式的防護和查殺上是非常有必要的。常見木馬所使用的埠在後面將有詳細的列表

一般選擇埠號都是選擇註冊埠號,沒有明確的定義 服務物件,不同的通訊可以根據自己的需要進行定義。

實現過程如下:

server:

[cpp]view plain

copy

#include //包含socket函式使用的各種協議族,send(),recv()

#include //呼叫linux系統函式的標頭檔案(read(),write(),send(),select())

#include 

#include 

#include 

#define port 7000

#define ip "127.0.0.1"

ints;  

struct

sockaddr_in servaddr;  

socklen_t len;  

std::list> li;  

void

getconn()   

}  void

getdata()   

retval = select(maxfd+1, &rfds, null, null, &tv);//實現非阻塞式的通訊,即需要等待時間的發生,一旦執行一定返回,返回的結果不同以表示函式執行的結果

if(retval == -1)else

if(retval == 0) else

}  sleep(1);  

}  }  

void

sendmess()   

}  }  

intmain()   

if(listen(s, 20) == -1)   

len = sizeof

(servaddr);  

std::thread

t(getconn);  

t.detach();  

std::thread

t1(sendmess);  

t1.detach();  

std::thread

t2(getdata);  

t2.detach();  

while

(1)  

return

0;  

}  

client:

[cpp]view plain

copy

#include 

#include 

#include 

#define myport  7000

#define buffer_size 1024

intmain(

intargc,

char

*argv)  

while

(1)else

if(retval == 0)else

/*使用者輸入資訊了,開始處理資訊並傳送*/

if(fd_isset(0, &rfds))  

}  }  

close(sock_cli);  

return

0;  

}  

Python pyftpdlib實現區域網檔案互傳

在同乙個區域網的多台電腦,傳遞檔案時可以通過 搭建web伺服器,設定目錄瀏覽的方式快速分享。如果上傳就比較麻煩了,通過qq 微信會產生很多檔案記錄,通過teamviewer太慢,ftp是乙個不錯的選擇。ftp伺服器軟體在日常開發中,基本不會用到。還涉及 macos windows的環境差異,非常麻煩...

Django實現區域網訪問

一.先關閉防火牆 1.centos7 systemctl stop firewalld.service 2.centos6 service iptables stop 3.windows 直接搜尋防火牆,然後全部關閉 二.settings.py設定 1.設定allowed hosts allowed...

socket實現區域網通訊

今天實現了乙個區域網通訊的小例子,上來記錄一下,不成熟,勿拍。這是我本機客戶端 這是我虛擬機器的客戶端。我為他們分配了靜態ip,這樣就可以實現區域網通訊了。注意 中必須把監視執行緒的isbackground屬性設定為false,這樣關閉視窗時才可以同時將此執行緒關閉。預設是true。using sy...