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

请问大虾们关于用socket进行linux下进程间通信问题

    来源: 互联网  发布时间:2015-12-26

    本文导语:  求采用socket进行linux进程间通信的例子, 重要用到哪些函数,调用的顺序是怎样的。 process1 main() { ... } process2 main() { ... } | int main(int argc, char ** argv)  {      int sockfd,new_fd; /* 监听socket: ...

求采用socket进行linux进程间通信的例子,
重要用到哪些函数,调用的顺序是怎样的。
process1
main()
{
...
}
process2
main()
{
...
}

|
int main(int argc, char ** argv) 

    int sockfd,new_fd; /* 监听socket: sock_fd,数据传输socket: new_fd */ 
    struct sockaddr_in my_addr; /* 本机地址信息 */ 
    struct sockaddr_in their_addr; /* 客户地址信息 */ 
    unsigned int sin_size, myport, lisnum; 

    if(argv[1])  myport = atoi(argv[1]); 
    else myport = 7838; 

    if(argv[2])  lisnum = atoi(argv[2]); 
    else lisnum = 2; 

    if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1) { 
        perror("socket"); 
        exit(1); 
    } 
    my_addr.sin_family=PF_INET; 
    my_addr.sin_port=htons(myport); 
    my_addr.sin_addr.s_addr = INADDR_ANY; 
    bzero(&(my_addr.sin_zero), 0); 
    if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) { 
        perror("bind"); 
        exit(1); 
    } 

    if (listen(sockfd, lisnum) == -1) { 
        perror("listen"); 
        exit(1); 
    } 
    while(1) { 
        sin_size = sizeof(struct sockaddr_in); 
        if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1) { 
            perror("accept"); 
            continue; 
        } 
        printf("server: got connection from %sn",inet_ntoa(their_addr.sin_addr)); 
        if (!fork()) { /* 子进程代码段 */ 
            if (send(new_fd, "Hello, world!n", 14, 0) == -1) { 
                perror("send"); 
                close(new_fd); 
                exit(0); 
            } 
        } 
        close(new_fd); /*父进程不再需要该socket*/ 
        waitpid(-1,NULL,WNOHANG);/*等待子进程结束,清除子进程所占用资源*/ 
    } 


    
 
 

您可能感兴趣的文章:

  • 超级新手菜鸟请问各位大虾!
  • 请问各位大虾,什么地方有Jsp学习资料?
  • 请问各位大虾,如何把一个String赋值给一个Char[]??
  • 请问各位unix大虾,哪有免费的unix下载?
  • 请问大虾们,如何学习linux?
  • 请问大虾,如何将静态库文件 .a 进行反编译? 在线等
  • 请问各位大虾哪有MontaVista Linux下载?急用
  • 大虾,请问谁有正则表达式的资料?谢谢!
  • 请问各位大虾:“在什么地方能下栽到JDBC?,
  • 急!请问大虾,如何书写UNXI下的MakeFile以编译C(调用了某些库)程序?
  • 各位大虾,请问:如何在使linux挂XP下的NTFS分区!!
  • 请问在LINUX下有那些比较好的CAD软件,请大虾推荐!
  • 请问各位大虾学哪种Unix好
  • 请问各位大虾,用gtk编程如何让图片缩放,旋转?
  • 请问那位大虾有关于EJB(包括Servlet,jsp)的项目例子 100分奉送呀!
  • 各位大虾,请问哪里有JDK API的chm格式的help下载,感激不禁!
  • 请问大虾:
  • 各位大虾,请问在linux 8.0下如何编程
  • 菜鸟请问各位大虾,如何看到RPM中的原文件内容
  • 大虾请问:在windows平台下监控linux桌面的软件
  • 如果一个server进程要fork许多子进程,但不等待子进程终止,也不希望子进程结束后处于僵进程状态直到父进程终止。请问可采用什么方法实现
  • 一个进程首先监听一个端口,等到有连接了就新开一个进程,让新进程来处理后面的通讯。请问母进程中已经打开了端口,子进程怎么来使用同一
  • 请问:子进程的数据可以传给父进程吗????
  • 父进程等待子进程n秒,如果子进程正常退出,父进程立即继续向下执行,如果子出现进程故障一直不退出,父进程等待n秒后继续向下执行,请问
  • 请问:如果知道一个进程的pid 怎么得到他父进程的pid
  • 请问: 在要想删掉进程名为"xxx"的进程,在shell脚本中该写什么啊?
  • 请问已知进程的PID,通过什么函数可以得到进程的名字?
  • 请问fork子进程后,怎么修改子进程的所属用户。
  • 请问父进程如何获得子进程的子进程的pid号? iis7站长之家
  • 请问知道进程标识,能够结束该进程并回收所有资源么?
  • 请问父进程如何获得子进程的子进程的pid号?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问unix与window之间能否实现socket通信或者有什么方式可以通信?
  • 请问如何在两个web服务器之间实现通信?
  • 请问gprs通信需要哪些东西?
  • 请问在vm里的liunx(rh9)怎么与win2000(同一机器)通信呀
  • 请问怎样在两个Frame之间通信
  • 请问有没有关于在linux下串口通信的好的文章和源码??非常感谢!
  • 请问两个毫不相关的程序,怎样实现通信
  • 请问不同服务器上的servlet可以相互通信吗?
  • 请问关于pipe通信的问题
  • 急急!请问linux7.x与windows me之间怎么进行通信?????
  • 请问如何在不知道对方IP,仅知道MAC地址的情况下和对方通信呢?
  • 请问:jsp 和 applet怎样通信/? 问题解决给高分!!!!!!!!!!!!!!
  • 请问如何实现两个窗口之间的通信?
  • 请问谁做过在linux下用java开发串口通信程序,所用第三方jar包是rxtx
  • 请问与MSN等IM软件通信要用到pidgin里面的libpurple的使用方法~~跪地祈求帮助
  • 请问我这种情况该使用哪种进程间通信方式,如何实现
  • 请问大家在 linux 下面都用哪些像OICQ的通信工具,能否介绍几个?
  • 请问一下, 我用applet和服务器socket通信, 是不是不能用IE浏览运行我的applet程序?
  • 请问两子进程间的通信,急急啊!
  • 请问Applet如何与Servlet通信
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!


  • 站内导航:


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

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

    浙ICP备11055608号-3