当前位置:  技术问答>linux和unix

网络编程中如何响应多个用户的请求

    来源: 互联网  发布时间:2015-07-21

    本文导语:  我打算开子线程来accept用户的请求 不知用这样的方法是不是只要简单在accept函数调用开一个子线程。 如果不是 应该怎么做 请各位多指教,谢谢。 | //最好有本网络编程的书。 #include  #incl...

我打算开子线程来accept用户的请求 不知用这样的方法是不是只要简单在accept函数调用开一个子线程。
如果不是 应该怎么做 请各位多指教,谢谢。

|
//最好有本网络编程的书。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define MYPORT 3490 /* the port users will be connecting to */
#define BACKLOG 10 /* how many pending connections queue will hold */

main()
{
int sockfd, new_fd; /* listen on sock_fd, new connection on new_fd */
struct sockaddr_in my_addr; /* my address information */
struct sockaddr_in their_addr; /* connector's address information */
int sin_size;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
peror("socket");
e x i t ( 1 ) ;
}
m y _ a d d r.sin_family = AF_INET; /* host byte order */
m y _ a d d r.sin_port = htons(MYPORT); /* short, network byte order */
m y _ a d d r. s i n _ a d d r.s_addr = INADDR_ANY; /* auto-fill with my IP */
b z e r o ( & ( m y _ a d d r.sin_zero), 8); /* zero the rest of the struct */
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) 
== -1) {
perror ( " b i n d " ) ;
exit( 1 ) ;
}
if (listen(sockfd, BACKLOG) == -1) {
p e r r o r ( " l i s t e n " ) ;
e x i t ( 1 ) ;
}
while(1) { /* main accept() loop */
sin_size = sizeof(struct sockaddr_in);
if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, 
&sin_size)) == -1) {
p e r r o r ( " a c c e p t " ) ;
c o n t i n u e ;
}
printf("server: got connection from %sn", 
i n e t _ n t o a ( t h e i r _ a d d r. s i n _ a d d r ) ) ;
if (!fork()) { /* this is the child process */
if (send(new_fd, "Hello, world!n", 14, 0) == -1)
p e r r o r ( " s e n d " ) ;
c l o s e ( n e w _ f d ) ;
e x i t ( 0 ) ;
}
close(new_fd); /* parent doesn't need this */
while(waitpid(-1,NULL,WNOHANG) > 0); /* clean up child processes */
}
}

|
这样也是可以的

|
看书吧,里,好几种c/s模型都写得很清楚了。

|
共享?所有子进程都copy了一份父进程的数据,不是共享。

|
还是看unix网络编程吧,里面说得再清楚不过了

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 用java做网络编程和用c做网络编程有啥区别
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 嵌入式网络编程与非嵌入式网络编程有什么不同
  • 《UNIX网络编程》这本书适合linux下的网络编程吗?
  • 读过 Unix网络编程 或者 熟知Unix网络编程的 的进来看一下
  • 请问unix网络编程和linux网络有什么区别
  • UNIX网络编程卷1
  • 高分求网络编程方面的书籍
  • 求助:linux/unix网络编程
  • 新手请教,linux网络编程。
  • linux环境进行网络编程的教材
  • Unix/Linux网络编程怎样来做一个项目?
  • 关于文件操作和Socket网络编程!
  • linux下网络编程环境配置问题
  • java的网络编程
  • 网络编程中“多宿”是什么意思
  • 谁知道哪有《Unix网络编程》w.richard stevens 著的下载?
  • 菜鸟问题:请问要在Linux操作系统下完成TCP/IP网络编程,用什么编程工具好?
  • 请推荐几本Linux/Unix网络编程的好书吧
  • 求介绍linux下的网络编程书


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3