傳送的報文頭資訊為struct型別,傳送資料型別可以是string 也可以是乙個類。在傳送struct型別或傳送類時,必須先將這個類序列化為流,接收時再將流反序列化為物件。接收的緩衝區大小設為1024,先接收報文頭,再根據報文頭中傳送資料的長度來接收資料(當然,也可以開乙個很大的緩衝區來接資料,但可能會比較浪費資源)。
1、傳送的方法。
在呼叫這個方法時,需要在例項化類時傳入兩個引數:目標ip和目標計算機的監聽埠號。
public int cmsend(object tcpheader, object objdata, int outtime)
btysendhead = transdatatobytearray(structhead, basepage.enumparamtype.struct.tostring());
byte bytsenddata = new byte[btysendhead.length + btydata.length];
btysendhead.copyto(bytsenddata, 0);
btydata.copyto(bytsenddata, btysendhead.length);
if (m_clientsocket == null || m_clientsocket.connected == false)
if (bytsenddata == null || bytsenddata.length == 0)
int left = bytsenddata.length;
int sndlen = 0;
while (true)
else
else}}
else
}
}catch (system.nullreferenceexception e)
catch (exception e)
finally
return flag;
}
2、接收方法
在呼叫這個方法時,需要在例項化類時傳入乙個引數:本地的監聽埠號。
public hashtable cmreceive()
while (true)
objstructreceivehead = transbytearraytoobject(byttcphead, basepage.enumparamtype.struct.tostring());
structreceivehead = (tcphead)objstructreceivehead;
messagelength = structreceivehead.messagelength;
if (messagelength % 1024 == 0)
else
if (count == 0)
while (true)
object objreceivedata = transbytearraytoobject(bytreceivedata, structreceivehead.messagetype);
hashtable httcphead = new hashtable();
httcphead.add("objstructreceivehead", structreceivehead);
httcphead.add("objreceivedata", objreceivedata);
return httcphead;}}
3、把物件轉化為位元組流的方法
public byte transdatatobytearray(object objectparam, string senddatatype)
break;
default:
break;
}
return buff;
}
4、把位元組流反轉為物件的方法
public object transbytearraytoobject(byte bytetemp, string paramtype)
else if (paramtype.equals("basedatacontainer"))
else if (paramtype.equals("struct"))
else
}
5、獲取本地ip
#region
取得本地
ippublic string gethostip()
#endregion
6、連線目標計算機
public void startclient()
this.m_clientsocket.connect(remoteep);
}catch (exception e)
{this.reporterror("startclient found a error:/r/n" + e.tostring());
程式設計,還是程式設計
喜歡程式設計,雖然水平一般,但還是執著地學習與程式設計有關的知識。中間因為工作關係與程式設計遠離了一段時間,現在又重拾起來,細想起來還是因為喜歡吧。喜歡程式軟體的思想和原理,喜歡程式 的魅力和成就感。程式設計軟體的思想是最值得學習的,一直認為思想決定行動,思想改變世界。每種軟體的流行和受人追捧,無不...
少兒程式設計程式設計
機械人比賽,聽上去讓人有一種高大上的科技感,沒錯,在大多數人眼裡,玩機械人那是科學家做的事情,不過隨著機械人教育的普及,越來越多的孩子也能夠駕馭這高大上的機械人。格物斯坦小坦克告訴你原因,這是歸結於孩子對於程式設計課程的學習,學會對機械人進行程式設計了,自然就能玩轉機械人啦。參加機械人比賽的意義遠遠...
LINUX程式設計 socket程式設計
什麼是套接字 套接字是一種通訊過程,它使客戶 伺服器系統的開發工作既可以在本地單機上進行,也可以跨網路進行。套接字建立過程 1,建立乙個套接字,這是分配給該伺服器程序的乙個作業系統資源,套接字由伺服器通過系統呼叫socket建立出來的,所以其它程序將不能對它進行訪問。2,給套接字起個名字,用系統呼叫...