?? 14.html
字號:
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> <br>
</font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> <br>
inet_aton(將網(wǎng)絡(luò)地址轉(zhuǎn)成網(wǎng)絡(luò)二進(jìn)制的數(shù)字) </font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 相關(guān)函數(shù) </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> inet_addr,inet_ntoa<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 表頭文件 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> #include<sys/scoket.h><br>
#include<netinet/in.h><br>
#include<arpa/inet.h><br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 定義函數(shù) </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> int inet_aton(const char * cp,struct
in_addr *inp);<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 函數(shù)說明 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> inet_aton()用來將參數(shù)cp所指的網(wǎng)絡(luò)地址字符串轉(zhuǎn)換成網(wǎng)絡(luò)使用的二進(jìn)制的數(shù)字,然后存于參數(shù)inp所指的in_addr結(jié)構(gòu)中。<br>
結(jié)構(gòu)in_addr定義如下<br>
struct in_addr<br>
{<br>
unsigned long int s_addr;<br>
};<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 返回值 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> 成功則返回非0值,失敗則返回0。<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><br>
<font face='宋體' size='2'><a name=linuxc273></a></font> </div>
</td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> <br>
</font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> <br>
inet_ntoa(將網(wǎng)絡(luò)二進(jìn)制的數(shù)字轉(zhuǎn)換成網(wǎng)絡(luò)地址) </font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 相關(guān)函數(shù) </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> inet_addr,inet_aton<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 表頭文件 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> #include<sys/socket.h><br>
#include<netinet/in.h><br>
#include<arpa/inet.h><br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 定義函數(shù) </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> char * inet_ntoa(struct in_addr
in);<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 函數(shù)說明 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> inet_ntoa()用來將參數(shù)in所指的網(wǎng)絡(luò)二進(jìn)制的數(shù)字轉(zhuǎn)換成網(wǎng)絡(luò)地址,然后將指向此網(wǎng)絡(luò)地址字符串的指針返回。<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 返回值 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> 成功則返回字符串指針,失敗則返回NULL。<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><br>
<font face='宋體' size='2'><a name=linuxc274></a></font> </div>
</td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> <br>
</font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> <br>
listen(等待連接) </font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 相關(guān)函數(shù) </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> socket,bind,accept,connect<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 表頭文件 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> #include<sys/socket.h><br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 定義函數(shù) </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> int listen(int s,int backlog);<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 函數(shù)說明 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> listen()用來等待參數(shù)s 的socket連線。參數(shù)backlog指定同時能處理的最大連接要求,如果連接數(shù)目達(dá)此上限則client端將收到ECONNREFUSED的錯誤。Listen()并未開始接收連線,只是設(shè)置socket為listen模式,真正接收client端連線的是accept()。通常listen()會在socket(),bind()之后調(diào)用,接著才調(diào)用accept()。<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 返回值 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> 成功則返回0,失敗返回-1,錯誤原因存于errno<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 附加說明 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> listen()只適用SOCK_STREAM或SOCK_SEQPACKET的socket類型。如果socket為AF_INET則參數(shù)backlog
最大值可設(shè)至128。<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 錯誤代碼 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> EBADF 參數(shù)sockfd非合法socket處理代碼<br>
EACCESS 權(quán)限不足<br>
EOPNOTSUPP 指定的socket并未支援listen模式。<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 范例 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> #include<sys/types.h><br>
#include<sys/socket.h><br>
#include<netinet/in.h><br>
#include<arpa/inet.h><br>
#include<unistd.h><br>
#define PORT 1234<br>
#define MAXSOCKFD 10<br>
main()<br>
{<br>
int sockfd,newsockfd,is_connected[MAXSOCKFD],fd;<br>
struct sockaddr_in addr;<br>
int addr_len = sizeof(struct sockaddr_in);<br>
fd_set readfds;<br>
char buffer[256];<br>
char msg[ ] =”Welcome to server!”;<br>
if ((sockfd = socket(AF_INET,SOCK_STREAM,0))<0){<br>
perror(“socket”);<br>
exit(1);<br>
}<br>
bzero(&addr,sizeof(addr));<br>
addr.sin_family =AF_INET;<br>
addr.sin_port = htons(PORT);<br>
addr.sin_addr.s_addr = htonl(INADDR_ANY);<br>
if(bind(sockfd,&addr,sizeof(addr))<0){<br>
perror(“connect”);<br>
exit(1);<br>
}<br>
if(listen(sockfd,3)<0){<br>
perror(“l(fā)isten”);<br>
exit(1);<br>
}<br>
for(fd=0;fd<MAXSOCKFD;fd++)<br>
is_connected[fd]=0;<br>
while(1){<br>
FD_ZERO(&readfds);<br>
FD_SET(sockfd,&readfds);<br>
for(fd=0;fd<MAXSOCKFD;fd++)<br>
if(is_connected[fd]) FD_SET(fd,&readfds);<br>
if(!select(MAXSOCKFD,&readfds,NULL,NULL,NULL))continue;<br>
for(fd=0;fd<MAXSOCKFD;fd++)<br>
if(FD_ISSET(fd,&readfds)){<br>
if(sockfd = =fd){<br>
if((newsockfd = accept (sockfd,&addr,&addr_len))<0)<br>
perror(“accept”);<br>
write(newsockfd,msg,sizeof(msg));<br>
is_connected[newsockfd] =1;<br>
printf(“cnnect from %s\n”,inet_ntoa(addr.sin_addr));<br>
}else{<br>
bzero(buffer,sizeof(buffer));<br>
if(read(fd,buffer,sizeof(buffer))<=0){<br>
printf(“connect closed.\n”);<br>
is_connected[fd]=0;<br>
close(fd);<br>
}else<br>
printf(“%s”,buffer);<br>
}<br>
}<br>
}<br>
}<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 執(zhí)行 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> $ ./listen<br>
connect from 127.0.0.1<br>
hi I am client<br>
connected closed.<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><br>
<font face='宋體' size='2'><a name=linuxc275></a></font> </div>
</td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> <br>
</font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> <br>
ntohl(將32位網(wǎng)絡(luò)字符順序轉(zhuǎn)換成主機(jī)字符順序) </font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 相關(guān)函數(shù) </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> htonl,htons,ntohs<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 表頭文件 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> #include<netinet/in.h><br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 定義函數(shù) </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> unsigned long int ntohl(unsigned
long int netlong);<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 函數(shù)說明 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> ntohl()用來將參數(shù)指定的32位netlong轉(zhuǎn)換成主機(jī)字符順序。<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 返回值 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> 返回對應(yīng)的主機(jī)字符順序。<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 范例 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> 參考getservent()。<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><br>
<font face='宋體' size='2'><a name=linuxc276></a></font> </div>
</td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> <br>
</font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> <br>
ntohs(將16位網(wǎng)絡(luò)字符順序轉(zhuǎn)換成主機(jī)字符順序) </font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 相關(guān)函數(shù) </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> htonl,htons,ntohl<br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 表頭文件 </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> #include<netinet/in.h><br>
</font> </td>
</tr>
<tr>
<td width="80" valign="top">
<div align="right"><font face='宋體' size='2'> 定義函數(shù) </font> </div>
</td>
<td valign="top"> <font face='宋體' size='2'> unsigned short int ntohs(unsigned
short int netshort);<br>
</font> </td>
</tr>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -