windowsの下でネットのプログラミングノートのlinuxはwindowsプログラムに移植します。
3409 ワード
1)再定義を防止するために、windowsコードの先頭ファイルには次の順序が含まれています。
璣include菗define WIN 32_リーン.AND_メロンブックス
参考記事:http://blog.sina.com.cn/s/blog_658 d 267 b 0100 jb 2 l.
//=====================================================================================================================================================
2)sockaddr
windows:
struct sockaddr{
unsigned shart
sakufamily/*アドレス族、AFuxxx*/
char saudta[14]/*14バイトのプロトコルアドレス*/
}
sa_familyは普通AF_ですINETは、Internet(TCP/IP)アドレス族を表します。sa_dataにはこのsocketのIPアドレスとポート番号が含まれています。
3)sockaddr_in
windows:
struct sockaddr_in{
ショートポイントsinufamily/*アドレス族*/
unsigned shot int sinuport;/*ポート番号*/
struct inudr sinudr;/*IPアドレス*/
unsigned char sinuzo[8]/*0を充填してstruct sockaddrと同じ大きさを維持します。
}
この構造はもっと使いやすいです。sin_ゼロはsockaddr_に用いられる。in構造はstruct sockaddrと同じ長さに充填され、bゼロ()またはmemset()関数でゼロにすることができる。
sockaddr_を指しますnのポインタとsockaddrを指すポインタは互いに変換できます。これは、関数が必要とするパラメータの種類がsockaddrの場合、関数で呼び出すことができます。
時には一つをsockaddr_に向けます。inのポインタはsockaddrを指すポインタに変換されます。あるいは反対です。
//=====================================================================================================================================================
4)socket()
linux:
int socket(int af,int type,int protocol)
windows:
SOCKET socket(int af,int type,int protocol)//ここでwindowsはlinuxと同じで、SOCKETタイプはint型(16ビット符号無し整数)5)bind()である。
linux:
int bit(int sockfd、struct sockaddr*myuader、socklenuaddrlen);
windows:
int bit(SOCKET sockfd、struct sockaddr*myuar、intaddrlen);socketlenはint型------ここはあまり確定しないで、真相を求めます!
6)recvfrom()
windows:
int recvfrom(SOCKET sockfd、char*buf、int len、int flags、struct sockaddr*from、int*from);
Linux:
int recvfrom(int sockfd、void*buf、int len、unsigned int flags、struct sockaddr*from、socket t*from)
7)sendto()
windows:
int sendto(SOCKET s、const char*msg、int len、int flags、const struct sockaddr*to、int tolen);
linux:
int sendto(int s,const void*msg,int len,int flags,struct sockaddr*to,socklentolen)
8)select()
linux:
windows:
9)addinfo
windows:
璣include
参考記事:http://blog.sina.com.cn/s/blog_658 d 267 b 0100 jb 2 l.
//=====================================================================================================================================================
2)sockaddr
windows:
struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
Linux:struct sockaddr{
unsigned shart
sakufamily/*アドレス族、AFuxxx*/
char saudta[14]/*14バイトのプロトコルアドレス*/
}
sa_familyは普通AF_ですINETは、Internet(TCP/IP)アドレス族を表します。sa_dataにはこのsocketのIPアドレスとポート番号が含まれています。
3)sockaddr_in
windows:
struct sockaddr_in {
short sin_family; // e.g. AF_INET, AF_INET6
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};
Linux:struct sockaddr_in{
ショートポイントsinufamily/*アドレス族*/
unsigned shot int sinuport;/*ポート番号*/
struct inudr sinudr;/*IPアドレス*/
unsigned char sinuzo[8]/*0を充填してstruct sockaddrと同じ大きさを維持します。
}
この構造はもっと使いやすいです。sin_ゼロはsockaddr_に用いられる。in構造はstruct sockaddrと同じ長さに充填され、bゼロ()またはmemset()関数でゼロにすることができる。
sockaddr_を指しますnのポインタとsockaddrを指すポインタは互いに変換できます。これは、関数が必要とするパラメータの種類がsockaddrの場合、関数で呼び出すことができます。
時には一つをsockaddr_に向けます。inのポインタはsockaddrを指すポインタに変換されます。あるいは反対です。
//=====================================================================================================================================================
4)socket()
linux:
int socket(int af,int type,int protocol)
windows:
SOCKET socket(int af,int type,int protocol)//ここでwindowsはlinuxと同じで、SOCKETタイプはint型(16ビット符号無し整数)5)bind()である。
linux:
int bit(int sockfd、struct sockaddr*myuader、socklenuaddrlen);
windows:
int bit(SOCKET sockfd、struct sockaddr*myuar、intaddrlen);socketlenはint型------ここはあまり確定しないで、真相を求めます!
6)recvfrom()
windows:
int recvfrom(SOCKET sockfd、char*buf、int len、int flags、struct sockaddr*from、int*from);
Linux:
int recvfrom(int sockfd、void*buf、int len、unsigned int flags、struct sockaddr*from、socket t*from)
7)sendto()
windows:
int sendto(SOCKET s、const char*msg、int len、int flags、const struct sockaddr*to、int tolen);
linux:
int sendto(int s,const void*msg,int len,int flags,struct sockaddr*to,socklentolen)
8)select()
linux:
windows:
9)addinfo
windows:
typedef struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
char *ai_canonname;
struct sockaddr *ai_addr;
struct addrinfo *ai_next;
} ADDRINFOA, *PADDRINFOA;
linux:struct addrinfo {
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
size_t ai_addrlen;
struct sockaddr *ai_addr;
char *ai_canonname; // !!!
struct addrinfo *ai_next;
};