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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

求問(wèn),關(guān)于htons函數(shù)的問(wèn)題,具體請(qǐng)看下面的情況!

求問(wèn),關(guān)于htons函數(shù)的問(wèn)題,具體請(qǐng)看下面的情況!

慕工程0101907 2021-10-13 14:11:12
我用htons()為什么轉(zhuǎn)換后的端口會(huì)不一樣?比如我用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");---------------------------------------------------調(diào)試跟蹤居然端口變成了3857。。這是為什么呀。。程序好像沒(méi)錯(cuò)呀?下面這段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");不好意思。1樓。想來(lái)你沒(méi)搞清。我不是不懂這個(gè)函數(shù)的原意。是說(shuō)我明明指定端口。。而程序在編譯時(shí)卻自動(dòng)改變端口號(hào)。造成我的客戶端無(wú)法連接上我的服務(wù)端的指定端口?要怎么才能連接上?(我的客戶端的指定端口和服務(wù)端的一樣,這沒(méi)有錯(cuò))
查看完整描述

1 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

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é)放在前面。舉個(gè)例子吧。假定你的port是
0x1234,

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

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

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

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

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

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


查看完整回答
反對(duì) 回復(fù) 2021-10-17
  • 1 回答
  • 0 關(guān)注
  • 471 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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