Unity UDP可傳送16進製制資料可重新連線

2021-10-21 13:43:45 字數 4365 閱讀 4211

using system;

using system.collections;

using system.collections.generic;

using system.io;

using system.net;

using system.net.networkinformation;

using system.net.sockets;

using system.text;

using system.threading;

using unityengine;

using unityengine.events;

using unityengine.networking;

namespace damtool

private

void

lateupdate()

void

start()

if(useouttargetipandtargetport)

//在這裡初始化server

"1234");

}///

/// 開啟載入執行緒

///

///

public

void

loadudpdata_outip_outport

(unityaction fun=

null

)///

/// 載入udp資料

///

/// 載入完畢執行的方法

///

ienumerator

reallyloadudpdata

(unityaction fun=

null)}

}///

/// 初始化套接字

///

public

void

initsocket()

,null);

#endif

//定義客戶端

//ipendpoint sender = new ipendpoint(ipaddress.any, 0);

ipendpoint sender =

newipendpoint

(ipaddress.

parse

(targetipaddress)

, targetconnectport)

; clientend =

(endpoint)sender;

print

("等待連線資料");

//開啟乙個執行緒連線

connectthread =

newthread

(new

threadstart

(socketreceive));

confirmthread =

newthread

(new

threadstart

(strconfirm));

connectthread.

start()

; confirmthread.

start()

;}///

/// 套接字傳送內容

///

/// 傳送內容

/// 是否加入確認陣列,預設為不加入

public

void

socketsend

(string sendstr,

string ip="",

int port=0,

bool needconfirm =

false)}

}else}}

}///

/// 傳送16進製制指令

///

/// 傳送內容

public

void

socketsendhex

(string sendstr,

string ip ="",

int port =0,

bool needconfirm =

false)}

}else}}

}//伺服器接收

void

socketreceive()

}//字元確認

void

strconfirm()

}}}//連線關閉

void

socketquit()

if(confirmthread !=

null

)//最後關閉socket

if(socket !=

null

) socket.

close()

; debug.

logwarning

("斷開連線");

}//重新連線

// use this for initialization

public

void

reconnectserver()

void()

///

/// 獲取ip,安卓端不可用

///

///

///

public

string

getip

(addressfam addfam)

string output ="";

foreach

(networkinte***ce item in networkinte***ce.

getallnetworkinte***ces()

)}//ipv6

else

if(addfam == addressfam.ipv6)}}

}}return output;

}//或取系統ip

public

string

getip()

}}}}

return addressip;

#endif

string ip ="";

ipaddress[

] ips = dns.

gethostaddresses

(dns.

gethostname()

);獲取本機名dns.gethostaddresses()根據本機名獲取ip位址組

foreach

(ipaddress ip in ips)

else

if(ip.addressfamily == addressfamily.internetworkv6)

}return ip;

}//byte轉16進製制數

static

string

byte2hex

(byte wbyte)

//btye陣列轉字元,需要陣列長度

static

string

byte2hex

(byte

_byte,

int _length)

return hexstr;}}

}public

enum addressfam

已用於很多專案,效果不錯,用的話需要稍作修改

public

void

initsocket()

, null);

#endif

//定義客戶端

//ipendpoint sender = new ipendpoint(ipaddress.any, 0);

ipendpoint sender =

newipendpoint

(ipaddress.

parse

(targetipaddress1)

, targetconnectport1)

; clientend =

(endpoint)sender;

print

("等待連線資料");

//開啟乙個執行緒連線

connectthread =

newthread

(new

threadstart

(socketreceive));

confirmthread =

newthread

(new

threadstart

(strconfirm));

connectthread.

start()

; confirmthread.

start()

;}

在安卓端如果出現無法收到訊息,但是可以傳送訊息的情況,將初始化方法中的防止出現連線錯誤的**注釋掉就可以了

springMVC中傳送郵件可傳送附件

以html傳送 bodypart bodypart new mimebodypart bodypart.setcontent content,text html charset utf 8 multipart multipart new mimemultipart multipart.addbody...

socket 傳送接收16進製制資料

背景 做了個智慧型櫃管理系統,需要和智慧型櫃對接。互動使用的是socket。轉換邏輯 傳送規則 資料 1 16進製制 0x01 高4位 0x00 低四位 0x01 10進製 0 1 ansi碼 48,49 16進製制 0x30,0x31 傳送 ansi如圖 傳送接收資料 start為碼頭,end為碼...

串列埠網口16進製制傳送的和ASCII傳送的區別

5 的ascii碼和字元 0 的ascii碼傳送出去,即是0x35,0x30 當我們按16進製制傳送50 時,這時50位乙個數即0x50。這就是為什麼按16進製制傳送的效率要高於ascii碼的效率。從中我們也可以看出計算機底層傳送資料是乙個個數。當我們接受的時候,我們同樣也是接受到乙個的數。當我們接...