并发程序——tcp

原创 2012年03月30日 21:33:01
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define MY_PORT 3333

int main(int argc ,char **argv)
{
     int listen_fd,accept_fd;
     struct sockaddr_in     client_addr;
     int n;
    
     if((listen_fd=socket(AF_INET,SOCK_STREAM,0))<0)
      {
            printf("Socket Error:%s\n\a",strerror(errno));
            exit(1);
      }
    
     bzero(&client_addr,sizeof(struct sockaddr_in));
     client_addr.sin_family=AF_INET;
     client_addr.sin_port=htons(MY_PORT);
     client_addr.sin_addr.s_addr=htonl(INADDR_ANY);
     n=1;
     /* 如果服务器终止后,服务器可以第二次快速启动而不用等待一段时间  */
     setsockopt(listen_fd,SOL_SOCKET,SO_REUSEADDR,&n,sizeof(int));
     if(bind(listen_fd,(struct sockaddr *)&client_addr,sizeof(client_addr))<0)
      {
            printf("Bind Error:%s\n\a",strerror(errno));
            exit(1);
      }
      listen(listen_fd,5);
      while(1)
      {
       accept_fd=accept(listen_fd,NULL,NULL);
       if((accept_fd<0)&&(errno==EINTR))
              continue;
       else if(accept_fd<0)
        {
            printf("Accept Error:%s\n\a",strerror(errno));
            continue;
        }
      if((n=fork())==0)
       {
            /* 子进程处理客户端的连接 */
            char buffer[1024];

            close(listen_fd);
            n=read(accept_fd,buffer,1024);
            write(accept_fd,buffer,n);
            close(accept_fd);
            exit(0);
       }
       else if(n<0)
            printf("Fork Error:%s\n\a",strerror(errno));
       close(accept_fd);
      }
}
//并发程序——tcp服务器

基于 TCP 协议的并发服务器程序

服务端: #include #include #include #include #include #include #include #include #include #inc...
  • u011641885
  • u011641885
  • 2015年09月06日 22:27
  • 442

实现TCP并发服务器之三(select函数)

前面两篇介绍用进程方式和线程方式实现并发服务,其实里面调用send,read,accept函数都会导致阻塞,而linux的select函数可以使我们在程序中同时监听多个文件描述符的读写状态。程序会停在...
  • ciaos
  • ciaos
  • 2012年07月04日 08:08
  • 1948

[Java Concurrency in Practice]第十二章 并发程序的测试

并发程序的测试在测试并发程序时,所面临的主要挑战在于:潜在错误的发生并不具有确定性,而是随机的。要在测试中将这些故障暴露出来,就需要比普通的串行程序测试覆盖更广的范围并且执行更长的时间。在进行安全性测...
  • qilixiang012
  • qilixiang012
  • 2015年09月07日 10:23
  • 1067

并发与计算机体系结构

多核 CPU,意味着多个 CPU,每一个核心对应着一个 CPU; 0. 主存与缓存计算机在执行程序时,每条指令都是在 CPU 中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中...
  • lanchunhui
  • lanchunhui
  • 2017年08月02日 15:05
  • 106

Oracle EBS APP-MRP-22064: 出现内部错误 (mrlups_update_supply,5)

  近来,请提交请求"启动 DRP 供应链计划流程",自动带其它并发请求,其中有一个请求“基于内存的计划员”提示错误,内容如下:+-----------------------------------...
  • chenxianping
  • chenxianping
  • 2011年06月10日 21:38
  • 2956

Oracle EBS可执行、并发程序的定义

 并发程序的定义 步骤: 一、定义可执行: 1.进入职责应用开发员--并发--可执行; 2.定义可执行:可执行的名称唯一;                       ...
  • gh320
  • gh320
  • 2013年12月05日 15:59
  • 2352

并发的程序

一 、程序的并发:  1、单核的处理器并发不是真正意义上的并行执行多个程序,CPU只会一条一条的执行语句  2、单核处理器的并发是CPU的一种调度策略,从逻辑和表面上看起来是并发执行。  3、多...
  • why7282299
  • why7282299
  • 2012年12月28日 10:24
  • 585

EBS 并发程序配置

本文档描述了EBS系统中的并发程序(即请求)和可执行程序的配置步骤,简要的介绍了如何配置一个简单的并发程序的过程。 一般的并发程序配置主要包含以下几个方面: 可执行(非必须)、并发程序、参数(非必须)...
  • lucky4016
  • lucky4016
  • 2017年01月17日 11:52
  • 944

Guava并发:ListenableFuture使用介绍以及示例

ListenableFuture顾名思义就是可以监听的Future,它是对java原生Future的扩展增强。我们知道Future表示一个异步计算任务,当任务完成时可以得到计算结果。如果我们希望一旦计...
  • xtqve
  • xtqve
  • 2015年09月15日 20:18
  • 673

EBS中Java并发程序笔记(2)

前面讲解了Java并发程序的基础使用,本文主要讲述如何在Ubuntu中利用eclipse开发Java并发程序。 1、安装JDK 通过网络查到,在R12的版本中,JDK应该是JDK1.5.0_0...
  • cunxiyuan108
  • cunxiyuan108
  • 2012年06月19日 21:02
  • 5441
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:并发程序——tcp
举报原因:
原因补充:

(最多只允许输入30个字)