1、伺服器端程式
可以在tcpclient上呼叫getstream()方法來獲的鏈結到遠端計算機的網路流networkstream。當在客戶端呼叫時,他獲的鏈結伺服器端的流;當在伺服器端呼叫時,他獲得鏈結客戶端的流。
classview codeprogram
);//
ip tcplistener listener = new tcplistener(ip, 8500
); listener.start();
//開始偵聽
console.writeline(
"start listener ...");
//獲取乙個鏈結中斷方法
tcpclient remoteclient =listener.accepttcpclient();
//列印鏈結到客戶端的資訊
console.writeline("
client connected ! local:
", remoteclient.client.localendpoint, remoteclient.client.remoteendpoint);
//獲取流,並寫入buffer中
networkstream streamtoclient =remoteclient.getstream();
byte buffer = new
byte
[buffersize];
int bytesread = streamtoclient.read(buffer, 0
, buffersize);
//獲得請求字串
string msg = encoding.unicode.getstring(buffer, 0
, bytesread);
console.writeline(
"received:[bytes]
", msg, bytesread);
console.writeline(
"\n\n輸入\"q\"鍵退出。");
consolekey key;
do while (key !=consolekey.q);}}
如果傳遞的資料位元組比較大,如、音訊等,則採用「分次讀取然後轉存」的方式,**如下:
//view code獲取字串
byte buffer = new
byte
[buffersize];
int bytesread; //
讀取的位元組數
memorystream ms =new
memorystream();
dowhile(bytesread > 0
);buffer =msstream.getbuffer();
string msg = encoding.unicode.getstring(buffer);
2、客戶端程式
客戶端向伺服器傳送字串的**與伺服器端類似,先獲取鏈結伺服器端的流,將字串儲存到buffer快取中,再寫入流,寫入流的過程就相當於將訊息傳送到伺服器端。
classview codeprogram
catch
(exception ex)
//列印連線到伺服器端的資訊
console.writeline("
client connected ! local:
", clint.client.localendpoint, clint.client.remoteendpoint);
//要傳送的資訊
string msg = "
hello";
networkstream streamtoserver =clint.getstream();
//獲取快取
byte buffer =encoding.unicode.getbytes(msg);
//傳送
streamtoserver.write(buffer, 0
, buffer.length);
console.writeline(
"sent:
", msg);
console.writeline(
"\n\n輸入\"q\"鍵退出。");
consolekey key;
do while (key !=consolekey.q);}}
這樣就可以成功的傳送和接收乙個字串了,如果想完成一些複雜的不間斷的互動就需要自己做一些調整了。
傳輸層TCP協議 TCP伺服器 客戶端
tcp伺服器端 客戶端流程 由socket函式建立,隨後用做bind,listen函式的第乙個引數的描述符。乙個伺服器通常僅僅建立乙個監聽套接字,它在該伺服器的生命期內一直存在。由accept函式返回。核心為每個由伺服器程序接受的客戶連線建立乙個已連線套接字 tcp三路握手過程已完成 當伺服器完成對...
TCP伺服器 客戶端程式
server tcpserver.cpp檔案 include common initsock.h include cinitsock initsock 初始化winsock庫 int main 填充sockaddr in結構 sockaddr in sin sin.sin family af ine...
伺服器和客戶端 tcp通訊
在vs2013的環境下,伺服器 如下 include include stdafx.h include pragma comment lib,ws2 32.lib using namespace std define buffer rev 1024 define buffer send 1024 i...