首先我們先來了解一下tcp通訊吧,我們都知道tcp通訊的過程會經過三次握手,四次揮手,這次我們不詳細來講解這些,我們來看看實際使用接收和傳送資料是怎麼操作吧,先看以下的**:
1、使用networkstream接收tcp報文
public void startaccept()
it1 += ct1;
}string head = system.text.encoding.getencoding("gbk").getstring(cread);
int len = int.parse(head);
byte text = new byte[len];
int it = 0;
while (it < len)
it += ct;
}string body = encoding.getencoding("gbk").getstring(text);
//此處增加長度計算
xmldocument doc = new xmldocument();
doc.loadxml(body);
...byte senddata = encoding.getencoding("gbk").getbytes(sendebank);
if (ns.canwrite)
ns.close();
}catch (exception ex)
finally
}
這裡是使用到netsteam類庫,用於接收tcp報文,一般tcp報文是由報文長度+報文內容組成,首先讀取前面規定長度的報文長度,比如說6位長度的報文長度,如000012+12位位元組長度的報文內容,讀取完長度之後接著讀取報文內容,然後進行解析。
這裡**是因為報文內容是xml,所以把他解析成xmldocument,進而進行操作,通過一系列操作再返回相應的報文回去,這個就是乙個簡單的接收報文+解析報文+處理報文+返回報文的過程。
2、使用tcpclient傳送tcp報文。
public string senddata(string sendstr,string trandtype,string nodeno)
catch (exception exc)
networkstream ns = sendtcp.getstream();
ns.writetimeout = timeout;
ns.readtimeout = timeout;
tryif (b > 0)
}else
if (ns.canread)
index += ct;
}ns.close();
sendtcp.close();
string recvstr = lenl + encoding.getencoding("gbk").getstring(recbuff);
return recvstr;}}
else
}catch (exception ex)
return recverror("**伺服器返回超時");
}
傳輸資料是把我們的報文按指定的編碼格式轉化成位元組流,寫到netstream上,完了之後就是持續等待直至報文返回在netstream上,即可收到返回報文,超時則會丟擲異常另外處理。 簡單的c TCP通訊
tcp 通訊 2009年8 月23日星期日 伺服器using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system...
c TCP高效能通訊
開篇都是吹牛逼哈。我原本打算使用dotnetty來解決傳輸問題,但是試了下沒有成功,也沒有找到相關問題解決方法,匯出原始碼,好大啊。暫時不想研究,而且是.net core的。最後沒有辦法,就自己封裝了。我就不上 了,已經傳到git上面了,和其它專案。我主要介紹過程原理,1.isocketchanne...
UART通訊收發
在使用串列埠時,只需掌握zigbee協議棧提供的串列埠操作相關的三個函式即可。uint8 haluartopen uint8 port,haluartcfg t config uint16 haluartread uint8 port,uint8 buf,uint16 len uint16 halu...