房卡麻將分析之」IPV6 改造

2021-08-03 03:19:53 字數 2026 閱讀 8152

前一段一是太忙,二是太忙,三還是太忙,不過實放說,肚子裡的素材也的確需要沉澱一下了。

先上百科:

ipv6是internet protocol version 6的縮寫,其中internet protocol譯為「網際網路協議」。ipv6是ietf(網際網路工程任務組,internet engineering task force)設計的用於替代現行版本ip協議(ipv4)的下一代ip協議。目前ip協議的版本號是4(簡稱為ipv4),它的下乙個版本就是ipv6。

簡單點說,我們常用的ipv4就是192.168.x.***,而它的數量有限,為了未來能夠容納更多的ip需求而不至於告罄,就公升級成ipv6了。它大大地擴充套件了位址的可用空間,ipv6的128位位址通常寫成8組,每組為四個十六進製制數的形式。比如:ad80:0000:0000:0000:abaa:0000:00c2:0002 是乙個合法的ipv6位址。

汗,我之前以為是六個ip段構成的。。。

好,廢話不多說,下面來進**卡麻將的ipv6的改造 。主要還是在套接字socket部分做處理,首先要將sockaddr_in做乙個sockaddr_in6的版本,用於儲存ipv6形式的ip位址。其它相關不同之外可以對照下表:

在初始化socket時,判斷下是否是ios平台,初始化ipv6位址結構資訊。

void mlclientinetaddress::initaddr()

mlclientinetaddress::operator struct sockaddr*()

mlclientinetaddress::operator const struct sockaddr*() const

const char* mlclientinetaddress::gethostaddress() const

const char* mlclientinetaddress::getip() const

;inet_ntop(af_inet6, (void *)&m_ipv6.sin6_addr, ipstr2, sizeof(ipstr2));

return ipstr2;}}

unsigned short mlclientinetaddress::getport() const

int mlclientinetaddress::getsocktype()

int mlclientinetaddress::getsocktype(const char* ipaddr)

for (curr = answer; curr != null; curr = curr->ai_next) }}

void mlclientinetaddress::setsockaddr(const char* ip, unsigned short port)

m_ipv4.sin_port = htons(port);

}else if (m_socktype == type_ipv6)

}int mlclientinetaddress::setipv6addr(const char* ip, unsigned short port)

;struct sockaddr_in *sockaddr_ipv4;

struct sockaddr_in6 *sockaddr_ipv6;

int ret = getaddrinfo(ip, stringutils::tostring(port).c_str(), &hint, &answer);

if (ret != 0)

for (curr = answer; curr != null; curr = curr->ai_next)

}freeaddrinfo(answer);

return -1;

}int mlclientinetaddress::getlength() const

在改造完**後,需要搭建ipv6網路測試環境進行測試。這個需要mac筆記本和iphone建立出乙個ipv6的區域網。

具體可以參考:

有了這個網之後,讓測試手機通過無線聯接這個共享的ipv6區域網訪問遊戲伺服器,就可以啟動xcode進行除錯了。

如果你能夠通過ipv6正常遊戲,就算成功了!

IPV6介紹已經IPV6改造基本步驟

通常見到的124.33.24.116這種形式的是ipv4版本的位址,這種位址由32位二進位制數表示。ipv6是一種新的ip位址的表示方式形如fc80 2367 7cff fed2 abc9,由128位二進位制數表示。以 號碼為例,本來4位數的 號碼就能夠乙個城市的居民使用,但是隨著 的普及,安裝 的...

房卡麻將分析系列之 發牌器 演算法設計

房卡麻將分析系列之 發牌器 演算法設計 回顧開發過程,我深深的體會到,乙個有多年摸牌經驗的伺服器主程是有多麼重要!記得年前幫一家公司做房卡麻將專案,對方從上到下,基本沒人會玩麻將,諸事都需要請教麻友,這樣的情況我覺得上線的產品應該也不太會好吧,沒愛的設計 不過我可是8歲就上牌桌,八十年代家裡就有了一...

房卡麻將開發系列之「缺人玩法」

一般玩麻將都是四個人,遇到 三缺一 怎麼辦?大多數情況下,玩家只好等待或叫人,這無疑增加了玩家的等待時間,同時也減緩了房卡的消耗速度。其實四個人並不是玩麻將的硬性條件,如果能在遊戲中不受四人限制隨時開局,就會大大提公升房卡麻將的實用性和可玩性,同時有效的加快房卡銷售速度。所謂 缺人玩法 即在原有基礎...