2013-04-26 52 views
0

我對套接字編程頗爲陌生,我的任務是將Windows代碼更改爲linux。我有一個問題,我希望你能幫助我。我得到了這段代碼段,其中IP4地址的四個參數從函數傳遞到我的套接字代碼(在winsock.h頭文件中的窗口中)。Socket編程 - 將Windows代碼轉換爲linux代碼

struct sockaddr_in server; 

server.sin_addr.S_un.S_un_b.s_b1 = (unsigned char)a1; 
server.sin_addr.S_un.S_un_b.s_b2 = (unsigned char)a2; 
server.sin_addr.S_un.S_un_b.s_b3 = (unsigned char)a3; 
server.sin_addr.S_un.S_un_b.s_b4 = (unsigned char)a4; 

我的問題是,如果有類似的方式將這些參數傳輸到linux套接字代碼。

+0

和'server'是... – m0skit0 2013-04-26 11:29:26

+0

服務器的定義是這樣的:'結構sockaddr_in的服務器;' – Kilian 2013-04-26 11:37:20

+1

請編輯您的問題添加此信息 – m0skit0 2013-04-26 11:58:08

回答

2

您可以手動轉換它:

inaddr_t make_inaddr(
      unsigned char a1, 
      unsigned char a2, 
      unsigned char a3, 
      unsigned char a4) 
{ 
    inaddr_t result; 

    result = htonl(((uint32_t)a1 << 24) 
        | ((uint32_t)a2 << 16) 
        | ((uint32_t)a3 << 8) 
        | a4); 
    return result; 
} 
+0

謝謝,這真的很好! – Kilian 2013-05-07 10:59:02

+0

@Kilian然後是時候接受✓這個答案,以鼓勵其他人給出很好的答案。 – glglgl 2013-05-28 13:23:30