代码:

server:

#include<netinet/in.h>
#include<sys/socket.h>
#include<sys/wait.h>
#include <arpa/inet.h>
#include<unistd.h>
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]);
elsemyport=7838;if(argv[2])lisnum=atoi(argv[2]);elselisnum=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:gotconnectionfrom%s\n",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);/*等待子进程结束,清除子进程所占用资源*/
}
}

client:

#include<netdb.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<unistd.h>
#define MAXDATASIZE 100/*每次最大数据传输量*/
/*********************************************************************
*filename:cycletcpclient.c
*purpose:循环tcp客户端程序
*tidiedby:zhoulifa(zhoulifa@163.com)周立发(http://zhoulifa.bokee.com)
Linux爱好者Linux知识传播者SOHO族开发者最擅长C语言
*datetime:2006-07-0422:20:00
*Note:任何人可以任意复制代码并运用这些文档,当然包括你的商业用途
*但请遵循GPL
*Thanksto:Google.com
*Hope:希望越来越多的人贡献自己的力量,为科学技术发展出力
*********************************************************************/int main(int argc,char*argv[])
{
int sockfd,numbytes;
char buf[MAXDATASIZE];
struct hostent*he;
struct sockaddr_in their_addr;
unsigned int myport;if(argv[2])myport=atoi(argv[2]);
else myport=7838;if(argc!=3){
fprintf(stderr,"usage:%shostnameport\n",argv[0]);
exit(1);
}
if((he=gethostbyname(argv[1]))==NULL){
perror("gethostbyname");
exit(1);
}
if((sockfd=socket(PF_INET,SOCK_STREAM,0))==-1){
perror("socket");
exit(1);
}
their_addr.sin_family=PF_INET;
their_addr.sin_port=htons(myport);
their_addr.sin_addr=*((struct in_addr*)he->h_addr);
bzero(&(their_addr.sin_zero),0);
if(connect(sockfd,(struct sockaddr*)&their_addr,sizeof(struct sockaddr))==-1){
perror("connect");
exit(1);
}
if((numbytes=recv(sockfd,buf,MAXDATASIZE,0))==-1){
perror("recv");
exit(1);
}
buf[numbytes]=0;
printf("Received:%s\n",buf);
close(sockfd);
return 0;
}

转载于:https://www.cnblogs.com/pangblog/p/3348024.html

TCP服务器:多进程相关推荐

  1. Linux网络编程 | Socket编程(二)TCPSocket的封装、TCP服务器多进程、多线程版本的实现

    目录 TCP的通信流程 TCPSocket的封装 TCP客户端 TCP服务器 多进程版本 多线程版本 TCP的通信流程 计算机网络 (三) 传输层 :一文搞懂UDP与TCP协议 在这篇博客中,我描述了 ...

  2. 项目 协程-实现非抢占式TCP服务器

    协程(Coroutines)是用户态下的非抢占式的轻量级线程,是一种在程序开发中处理多任务的组件 项目介绍 项目开发环境 Linux 项目开发语言及工具 C.vim.gcc.gdb.Makefile ...

  3. [C/C++后端开发学习] 7 tcp服务器的epoll实现以及Reactor模型

    tcp服务器的epoll实现以及Reactor模型 1 IO多路复用 select poll epoll 2 epoll详解 2.1 基本使用方法 2.2 LT水平触发和ET边沿触发 2.3 实现服务 ...

  4. python TCP服务器v1.8 - PyQt5登录界面美化+淡入淡出

    TCP聊天服务器套接字v1.8 所有版本记录: v1.0 : TCP聊天服务器套接字|PyQt5+socket(TCP端口映射+端口放行)+logging+Thread(含日志,html)+anaco ...

  5. go高性能tcp服务器,MarioTCP: Multi Libvent TCP Server 一个高性能的TCP服务器

    我在sourceforge上建了这个开源项目,把项目介绍首发在csdn:http://blog.csdn.net/everlastinging/article/details/10894493 没想到 ...

  6. Python TCP服务器v1.7 - PyQt5 server服务端来临

    TCP聊天服务器套接字v1.7 所有版本记录: v1.0 : TCP聊天服务器套接字|PyQt5+socket(TCP端口映射+端口放行)+logging+Thread(含日志,html)+anaco ...

  7. 【TCP服务器和客户端的简单编写】

    TCP服务器和客户端的简单编写 TCP简介 TCP是什么 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IE ...

  8. TCP服务器和客户端的链接例子(侧重点在注意关闭套接子,减少套接子的描述子)

    TCP服务器和客户端的链接例子(侧重点在注意关闭套接子,减少套接子的描述子) 每个文件或套接口都有一个访问计数,该访问计数在文件表项中维护,它表示当前指向该文件或套接口的打开的描述字个数. 每个文件, ...

  9. python写服务器端qt客户端_python写一些简单的tcp服务器和客户端

    代码贴上,做个记录 TcpClient # -*- coding:utf-8 -*- import socket target_host = "127.0.0.1" #服务器端地址 ...

  10. python tcp服务器 多线程_Python中的多线程TCP服务器

    我使用python的threding模块创建了一个简单的多线程tcp服务器.每次连接新客户端时,该服务器都会创建一个新线程. #!/usr/bin/env python import socket, ...

最新文章

  1. 国际财务报告准则 IFRS 与信息系统
  2. React Native 项目常用第三方组件汇总
  3. 向量召回 MIND多兴趣双塔模型
  4. ImportError: cannot import name cbook
  5. Shell-脚本只能运行1次
  6. java仿聊天室项目总结_Java团队课程设计-socket聊天室(Day4总结篇)
  7. 计算机直线的绘制实验报告,dda画直线实验报告
  8. 帧率ffmepg 摄像头_监控摄像头的硬盘内存选择方法
  9. python基于百度地图获取指定的经纬度信息
  10. C语言程序设计实践-C语言应用实践
  11. 分享不可不知的CAD经典技巧
  12. 行业精英解答十大游戏关卡设计问题
  13. 伪彩色增强(基于MATLAB)
  14. 关于BOM表的一些事
  15. 看刘未鹏先生的博客的一些摘记
  16. 聊聊那些我们不应该被百度惯坏的搜索技巧
  17. 51单片机的键盘检测原理
  18. android 插屏广告代码,插屏(Interstitial)广告样式
  19. air dots 配对_AirDots 使用分享
  20. JavaScript-节点操作

热门文章

  1. 浅析网站优化的站长们应该怎样安排自己的工作内容呢?
  2. 浅析网站建设与设计有哪些需要引起重视的行业规范
  3. 任何网站优化都离不开的四个方向是什么?
  4. java改成c语言专业名词解释,求助大神!!!JAVA转换成C语言
  5. 使用VAE、CNN encoder+孤立森林检测ssl加密异常流的初探——真是一个忧伤的故事!!!...
  6. Apache Flink vs Apache Spark——感觉二者是互相抄袭啊 看谁的好就抄过来 Flink支持在runtime中的有环数据流,这样表示机器学习算法更有效而且更有效率...
  7. nodejs 转换long到unsigned long(NXT)
  8. 集成开发环境(IDE)
  9. 【UER #8】打雪仗
  10. poj1564 Sum It Up dfs水题