104、
查詢遠端埠已建立的連線,讀取字串
// 獲取字串
ipendpoint endpoint = tcpclient.client.remoteendpoint as ipendpoint;
//建立遠端埠監聽
tcplistener listener=new tcplistener(endpoint);
const int buffersize = 8192;
byte buffer = new byte[buffersize];
int bytesread; // 讀取的位元組數
listener.start();
tcpclient remoteclient = listener.accepttcpclient();
networkstream streamtoclient = remoteclient.getstream();
memorystream msstream = new memorystream();
dowhile (bytesread > 0);
buffer = msstream.getbuffer();
string msg = encoding.unicode.getstring(buffer);
105、
連線遠端埠,寫入命令
private void button2_click(object sender, eventargs e)
else
106、
執行時先執行server 再執行tcppclient 通過客戶端傳送資料
1://建立控制台程式 serverconsole
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.net; // 引入這兩個命名空間,以下同
using system.net.sockets;
class server
); tcplistener listener = new tcplistener(ip, 8500);
listener.start(); // 開始偵聽
console.writeline("start listening ...");
// 獲取乙個連線,同步方法,在此處中斷
tcpclient remoteclient = listener.accepttcpclient();
// 列印連線到的客戶端資訊
console.writeline("client connected! <-- ",
remoteclient.client.localendpoint, remoteclient.client.remoteendpoint);
// 獲得流
networkstream streamtoclient = remoteclient.getstream();
doif (bytesread == 0) throw new exception("讀取到0位元組");
console.writeline("reading data, bytes ...", bytesread);
// 獲得請求的字串
string msg = encoding.unicode.getstring(buffer, 0, bytesread);
console.writeline("received: ", msg);
// 轉換成大寫並傳送
msg = msg.toupper();
buffer = encoding.unicode.getbytes(msg);
lock (streamtoclient)
console.writeline("sent: ", msg);
}catch (exception ex)
} while (true);
streamtoclient.dispose();
remoteclient.close();
console.writeline("\n\n輸入\"q\"鍵退出。");
dowhile (key != consolekey.q);
}}2://客戶端控制台程式tcppclient
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.net;
using system.net.sockets;
namespace tcppclient
catch (exception ex)
// 列印連線到的服務端資訊
console.writeline("server connected! --> ",
client.client.localendpoint, client.client.remoteendpoint);
networkstream streamtoserver = client.getstream();
console.writeline("menu: s - send, x - exit");
doconsole.writeline("sent: ", msg);
int bytesread;
buffer = new byte[buffersize];
lock (streamtoserver)
msg = encoding.unicode.getstring(buffer, 0, bytesread);
console.writeline("received: ", msg);
}catch (exception ex)
}} while (key != consolekey.x);
streamtoserver.dispose();
client.close();
console.writeline("\n\n輸入\"q\"鍵退出。");
dowhile (key != consolekey.q);}}
}
工作專案總結
前段時間做了乙個小工具,今天總結一下專案中使用到的技術 1.執行平台windows,介面用的mfc,介面比較簡單,主要用到 list control,edit control,combo box,radio button,button。都是一些常見的控制項,整體介面也很簡潔。遇到的問題 字串轉換的問...
miniftp專案總結(八)
最大連線數的限制 在session結構體重增加乙個num clients成員,在主線程式中,每當來乙個客戶端就使num clients 子程序在開啟會話前要進行最大連線數限制的檢查,只有小於最大連線數的限制才開啟會話。那麼子程序退出的時候如何對num clients進行維護呢?void check ...
TCP IP協議介紹之工作原理
tcp ip的通訊協議 這部分簡要介紹一下tcp ip的內部結構,為討論與網際網路有關的安全問題打下基礎。tcp ip協議組之所以流行,部分原因是因為它可以用在各種各樣的通道和底層協議 例如t1和x.25 乙太網以及rs 232序列介面 之上。確切地說,tcp ip協議是一組包括tcp協議和ip協議...