int clntSock = ((struct ThreadArgs *)threadArgs)->clntSock; free(threadArgs); HandleTCPClient(clntSock); return NULL; }
3)运行结果 首先编译链接完成后产生serv和 cli两个程序,编译链接服务器和客户端程序的指令请大家参照前面的案例给出。完成编译链接后先启动服务器程序serv,如图3所示,然后再运行客户端程序,如图4所示。服务器打印子进程ID,客户端收到服务器返回的信息。可以同时运行多个客户端程序。建议客户端和服务器运行于不同的物理机器上。
图3、服务器运行界面
图4、客户端运行界面
3、思考题
1)请使用多线程实现服务器和客户端之间不受发送接收顺序约束的“聊天”。 2)简要描述父线程与子线程之间的关系。
三、小结
本次实验使我们熟悉Linux线程的一些基本概念以及多进程程序与多线程程序的区别,熟悉了如何创建线程,熟悉了函数pthread_create的用法以及多线程的特点。特别要注意非标准库函数的编译链接方法。