C winsock程式設計

2021-04-20 19:40:56 字數 2408 閱讀 8227

傳送的報文頭資訊為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,給套接字起個名字,用系統呼叫...