socket(TCP)傳送檔案

2021-09-06 15:16:38 字數 3996 閱讀 3086

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.windows.forms;

using

system.net.sockets;

using

system.threading;

using

system.net;

using

system.io;

namespace

client

//建立 1個客戶端套接字 和1個負責監聽服務端請求的執行緒

socket socketclient = null

; thread threadclient = null

;

private

delegate

void settext(string

text);

//////

鏈結服務端

/// ///

///private

void btn_login_click(object

sender, eventargs e)

//接收服務端資料

public

void

recemsg()

}//訊息框裡面資料

void showmsg(string

str));}

else

//tb_infor.text = ystr + str + getcurrenttime();

//代替上面的方法

\r\n");}}

//////

開啟檔案

/// ///

///private

void btn_openfile_click(object

sender, eventargs e)

}#region

//////

傳送檔案

/// ///

///private

void btn_sendfile_click(object

sender, eventargs e)

}//////

傳送訊息

/// ///

///private

void btn_sendmessage_click(object

sender, eventargs e)

//////

傳送資訊

/// ///

private

void sendmessage(string

txtmsg)

#endregion

//////

獲取當前系統時間的方法

/// ///

當前時間

private

datetime getcurrenttime()

//快捷鍵 enter傳送資訊

private

void tb_message_previewkeydown(object

sender, previewkeydowneventargs e)}}

}

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.windows.forms;

using

system.net.sockets;

using

system.net;

using

system.threading;

using

system.io;

namespace

socket

socket socketwatch = null;//

負責監聽客戶端的套接字

thread threadwatch = null;//

負責監聽客戶端的執行緒

thread threadmovelist = null;//

負責去掉失敗的socket的ip

//宣告乙個帶引數委託處理文字顯示

private

delegate

void settext(string

text);

//宣告乙個處理ip新增到listbox的委託

private

delegate

void listboxadd(string

ipsocket);

//宣告乙個處理在listbox去除ip的委託

private

delegate

void listboxmove(string

ipsocket);

///開始服務端監聽

/// ///

///private

void btn_startserver_click(object

sender, eventargs e)

//訊息框裡面資料

public

void showmsg(string

str));}

else

= ystr + str + getcurrenttime();

\r\n");}}

dictionary

socketdir = new dictionary();//

將每乙個與客戶端進行通訊的socket放到該集合中.

public

void

accpet()

}//////

在ip欄裡新增建立socket的ip

/// private

void listboxadd(string

ipsocket));}

else

}}

//////

向客戶端傳送資訊

/// ///

///private

void btn_sendany_click(object

sender, eventargs e)

else}}

//////

獲取當前系統時間的方法

/// ///

當前時間

private

datetime getcurrenttime()

//////

接收客戶端發來的資訊

/// ///

客戶端套接字物件

private

void serverrecmsg(object

socketclientpara)

catch (socketexception ex)//

注意:在捕獲異常時,先確定具體的異常型別。

catch

(exception ex)

if (arrserverrecmsg[0] == 0)//

表示字串

else

if (arrserverrecmsg[0] == 1

) }}

}}

}}

非同步socket TCP 通訊

使用 wsaasyncselect 可實現非同步 socket 通訊,原型 wsaasyncselect socket s,套接字 hwnd hwnd,接收網路事件的視窗控制代碼 unsigned int wmsg,網路事件通知訊息 long lwvent 套接字需要的通知碼 long lwvent...

Socket TCP的程式設計過程

利用winsock api函式編寫tcp client的過程如下 1 載入winsock define winsock version makeword 2,2 word wversionrequested 定義socket1.1或者socket2.0 wversionrequested makew...

Socket TCP 監聽失敗 10022

在實現tcp通訊的多執行緒中,出現了乙個問題,監聽函式會報錯 繫結位址到伺服器 int ret bind listenser,sockaddr saddr,slen if ret socket error 監聽連線請求 int li listen listenser,50 if li socket ...