如何编写Linux下的客户机_服务器软件(3)

文章作者 100test 发表时间 2007:03:14 16:29:33
来源 100Test.Com百考试题网


简要说明:

当有客户机发出连接请求时,此函数初始化这个连接。正常调用返回与客户机通信的通信文件描述符,出错返回-1。参数s为socket调用返回的文件描述符,address将用来存储客户机的信息,此信息由accept填入,当与客户机连接时,客户机的地址与端口将填到此处。address_len是客户机地址长度的字节数,也由accept填入。

(5)connect

调用方式:

#include 

#include 



int connect(int s,struct sockaddr *address,size_t address_len).

简要说明:

客户机调用socket建立传输端口后,调用connect来建立与远程服务器相连的连接线路。

此函数的参数调用同bind。

(6)inet_addr

调用方式:

#include 

#include 

#include 



in_addr_t inet_addr(const char *addstring).

简要说明:

此函数将字符串addstring表示的网络地址(如192.168.0.1)转换成32位的网络字节序二进制值,若成功返回32位二进制的网络字节序地址,若出错返回 INADDR_NONE。INADDR_NONE是32位均为1的值(即255.255.255.255,它是Internet的有限广播地址),故如果要转换的addstring是255.255.255.255,函数调用将失败。

(7)fork

调用方式:

#include 

#include 





pid_t fork(void).

简要说明:

fork的作用是拷贝父进程的内存映象来创建子进程,两个进程将接着fork后的指令继续执行。 事实上它返回两个进程控制号,对于父进程它返回子进程的进程ID,对于子进程它返回0。

可用下边的代码调用fork:

pid_t childpid.

if((childpid=fork())=-1){

perror("The fork failed").

exit(1).

}

else if(child==0){

调用子进程.

}

else if(child>0){

调用父进程.

}

以上介绍了网络编程的有关库函数的调用方法,下面举一个客户机/服务器程序的小例子具体说明如何设计网络程序。本例介绍如何查看服务器上的时间和日期,由于daytime服务器的通用端口为13,客户机程序将通过调用13号端口对服务器上的时间和日期进行操作。

/*timeserve.c*/

/*服务器程序伪代码如下:



打开daytime监听端口;

while(客户机与服务器成功连接——成功返回通信文件描述符)

{

fork()

子进程:

{

读出当前时间;

将当前时间写入通信文件描述符;

关闭通信文件描述符;

}

父进程:

关闭通信文件描述符;

}

*/


相关文章


Linux操作系统下的实时数据镜像详解(3)
Linux操作系统下的实时数据镜像详解(1)
Linux操作系统下的实时数据镜像详解(2)
如何编写Linux下的客户机_服务器软件(3)
如何编写Linux下的客户机_服务器软件(4)
Linux下一种ELF文件的代码签名验证机制(2)
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛