第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

調(diào)試跟蹤居然端口變成了3857?這是為什么呀?程序好像沒錯呀?

調(diào)試跟蹤居然端口變成了3857?這是為什么呀?程序好像沒錯呀?

Cats萌萌 2023-03-19 22:18:58
我用htons()為什么轉(zhuǎn)換后的端口會不一樣?比如我用htons(4367),調(diào)試的結(jié)果居然變?yōu)?857,這是為什么?怎么解決啊?------------------int connectclient(){SOCKET s;s=::socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN sin;sin.sin_family=AF_INET;sin.sin_port=htons(4367);sin.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");---------------------------------------------------下面這段1589居然變成了13574,好像指定端口居然成了隨機(jī)端口了。sockaddr_in client;client.sin_family=AF_INET;client.sin_port=htons(1589);client.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
查看完整描述

2 回答

?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗 獲得超5個贊

htons 是把你機(jī)器上的整數(shù)轉(zhuǎn)換成“網(wǎng)絡(luò)字節(jié)序”, 網(wǎng)絡(luò)字節(jié)序是 big-endian,也就是整數(shù)的高位字節(jié)在前面。 而我們常用的 x86 CPU (intel, AMD) 電腦是 little-endian,也就是整數(shù)的低位字節(jié)放在前面。舉個例子吧。假定你的port是
0x1234,

在網(wǎng)絡(luò)字節(jié)序里 這個port放到內(nèi)存中就應(yīng)該顯示成
addr addr+1
0x12 0x34

而在x86電腦上,0x1234放到內(nèi)存中實際是:
addr addr+1
0x32 0x12

htons 的用處就是把實際內(nèi)存中的整數(shù)存放方式調(diào)整成“網(wǎng)絡(luò)字節(jié)序”的方式。 

再次回樓主,你的問題就是我說的, htons(4367) 后,在x86機(jī)器上,就是變成了 3857,就是因為字節(jié)序被調(diào)整了,這是正確的. 4367十六進(jìn)制是0x110F,由于是little endian所以在內(nèi)存中存放的是
0x0F 0x11

htons后,變成網(wǎng)絡(luò)字節(jié)續(xù),也就是
0x11 0x0F
這個數(shù)字如果你去看了話,就是
3857.

 


查看完整回答
反對 回復(fù) 2023-03-22
?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗 獲得超8個贊

htons 是把你機(jī)器上的整數(shù)轉(zhuǎn)換成“網(wǎng)絡(luò)字節(jié)序”, 網(wǎng)絡(luò)字節(jié)序是 big-endian,也就是整數(shù)的高位字節(jié)在前面。 而我們常用的 x86 CPU (intel, AMD) 電腦是 little-endian,也就是整數(shù)的低位字節(jié)放在前面。舉個例子吧。假定你的port是
0x1234,

在網(wǎng)絡(luò)字節(jié)序里 這個port放到內(nèi)存中就應(yīng)該顯示成
addr addr+1
0x12 0x34

而在x86電腦上,0x1234放到內(nèi)存中實際是:
addr addr+1
0x32 0x12

htons 的用處就是把實際內(nèi)存中的整數(shù)存放方式調(diào)整成“網(wǎng)絡(luò)字節(jié)序”的方式。 

再次回樓主,你的問題就是我說的, htons(4367) 后,在x86機(jī)器上,就是變成了 3857,就是因為字節(jié)序被調(diào)整了,這是正確的. 4367十六進(jìn)制是0x110F,由于是little endian所以在內(nèi)存中存放的是
0x0F 0x11

htons后,變成網(wǎng)絡(luò)字節(jié)續(xù),也就是
0x11 0x0F
這個數(shù)字如果你去看了話,就是
3857. 

你debug的時候,直接去看端口的內(nèi)存里的內(nèi)容,就明白了。

查看完整回答
反對 回復(fù) 2023-03-22
  • 2 回答
  • 0 關(guān)注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號