如果想要實現兩不同區域網之間的主機程序通訊,即實現區域網內兩個電腦之間的資料傳輸,那麼就不能通過管道或者命名管道的方式來實現,這裡的區域網通訊是通過一種叫做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...