Delphi下連接埠複用的實現

來源:互聯網
上載者:User
其實連接埠複用聽起來很深奧的技術,其實很簡單,簡單得只需要一個函數就可以實現: 
  setsockopt( SOCKET s, int level, int optname, const char FAR *optval, int optlen );  
  參數: s Socket 的識別碼,level選項設定的 level ,optname   選項名稱 ,optval   選項的設定值 ,optlen   選項設定值的長度。 
  我只說一個參數,就是選項名稱的其中一個選項SO_REUSEADDR,稍微會一點英語的和有一點電腦基礎知識的都知道,這個選項後面的意思就是“重複使用地址” 
  我這裡把實現連接埠複用的代碼給出來,並給新手朋友們解釋一下: 
var 
sobinyshuai : bool; 
myIP : string; 
PORT : integer; 
ServerSocket : TSocket; 
SockAddrIn: TSockAddrIn; 
WSAData: TWSAData; 
begin 
myIP:=’123.123.123.123’;{你自己的IP,為什麼要這個,下面會說}  
sobinyshuai:=TRUE;   {這句話的意思是,sobiny帥,賦值是肯定的回答。呵呵,開個玩笑。} 
WSAStartUp(MakeWord(1, 1), WSAData); 
ServerSocket := WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, nil, 0, 0); {建造一個TCP的socket。} 
setsockopt(ServerSocket, SOL_SOCKET, SO_REUSEADDR, @sobinyshuai, sizeof(sobinyshuai)); 
{設定socket的狀態,還是關鍵的這一句SO_REUSEADDR,允許連接埠重用} 
SockAddrIn.sin_family := AF_INET;         {設定這個串連的,我都還不曉得有另外的選項沒,不過好象一直用這個。} 
SockAddrIn.sin_addr.s_addr:=inet_addr(myIP);   {設定這個串連的IP,這裡可以是INADDR_ANY這個選項,不過要是是INADDR_ANY的話,所有的外部的串連都會是這個,不過要是你複用的80連接埠,設定INADDR_ANY的話,後果可想而知。當然你程式要是辨別資料包當然沒問題} 
SockAddrIn.sin_port := htons(Port);     {設定這個串連的連接埠} 
Bind(ServerSocket, SockAddrIn, SizeOf(SockAddrIn));{設定ServerSocket的屬性吧,應該這樣理解} 
Listen(ServerSocket, 1); {設定監聽,等待串連。在Accept前只接受一個串連} 
…… 
end; 
  連接埠複用就說完了,就這麼簡單,如果要加上什麼功能的話,請在邪惡八進位裡面搜尋一下我發的“綜合小工具”的原始碼,把裡面命令提示字元,註冊表類比等你喜歡的東西複製過來就可以了。這個文章說白了還是必須要有一點點程式基礎的朋友看的(各位超級新手的話,還是用別人的軟體好些。)我全用的是API的函數,稍微變形一下就可以在C++下用。 
有3個PAS:Windows, Winsock2, Winsock; 
其實我想連接埠複用的問題並不是想寫什麼駭客軟體,而是那天誇下海口說只需要利用一個webshell就實現各內網間的UDP通訊息,就必須涉及一下連接埠的複用,不然咋能行呢,如果有知道能UDP訪問HTTP的朋友一定告訴我方法。呵呵,先謝謝。 
  現在又有一個想法提出來,希望高手來指點一下:就是偷襲serv-u的方法,在找不到目錄,註冊表不能匯出使用者的時候,偷襲serv-u.我是這麼想的:因為在sendmessage給視窗可以發送訊息,經過實驗發現,serv-u的各個視窗都可以發送WM_SETTEXT改變文字,並且可以給執行許可權那裡發送點擊的資訊,再給應用那個按鈕發送點擊的資訊,得到各個盤的控制許可權,或者馬上通過serv-u設定系統管理員帳號(如果serv-u有這個許可權的話),不過問題就是,必須要管理員開啟serv-u設定使用者那一欄的時候,才能夠行得通。測試的時候在本機GUEST許可權下,這個程式是行得通的,直接又加了一個管理員,就是不知道在webshell下的執行效果會怎麼樣,如果有條件的朋友可以試試. 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.