//ser.cpp
#include <iostream>
#include <fcntl.h>
#include <sys/socket.h>
#include <sys/select.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h> #include <string.h>
#define IP "127.0.0.1"
#define PORT 8888
using namespace std; int main()
{
int sockSer,sockCli;
sockaddr_in addrSer,addrCli;
sockSer = socket(AF_INET,SOCK_STREAM,0);
bzero(&addrSer,sizeof(addrSer));
bzero(&addrCli,sizeof(addrSer)); addrSer.sin_family = AF_INET;
addrSer.sin_port = htons(PORT);
addrSer.sin_addr.s_addr = inet_addr(IP); socklen_t len = sizeof(sockaddr_in);
bind(sockSer,(sockaddr*)&addrSer,len);
listen(sockSer,5); char clibuff[255];
memset(clibuff,0,sizeof(clibuff)); ////////////////////////////////////////////////////// fd_set Read;
fd_set Write;
static int maxfd = 0; int sock_set[100];//socket set.
int size = 1;//index sockCli = accept(sockSer,(sockaddr*)&addrCli,&len);
if(sockCli<0)
{
cout<<sockCli<<endl;
cout<<"accept() error!!!!"<<endl;
close(sockSer);
close(sockCli);
return -1;
}
struct timeval _timeout={3,0};
off_t fd = open("a",O_CREAT|O_RDWR);
while(1)
{
FD_ZERO(&Read);
FD_SET(sockCli,&Read); FD_ZERO(&Write);
FD_SET(fd,&Write); maxfd = maxfd>sockCli? maxfd:sockCli;
maxfd = maxfd>fd?maxfd:fd; select(maxfd+1,&Read,&Write,NULL,&_timeout);
if(FD_ISSET(sockCli,&Read))
{
if(fork()==0)
{
cout<<"return"<<endl;
char buff[255];
memset(buff,0,sizeof(buff));
while(1){
read(sockCli,buff,sizeof(buff));
cout<<buff<<endl;
char str[]="xiaoyanzi";
write(sockCli,str,strlen(str)+1);
}
}
}
if(FD_ISSET(fd,&Write))
{
write(fd,"1234",5);
sleep(1);
}
}
return 0;
}
#include <iostream>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h> #define IP "127.0.0.1"
#define PORT 8888 using namespace std;
int main()
{
int sockCli = socket(AF_INET,SOCK_STREAM,0);
sockaddr_in addrSer;
bzero(&(addrSer),sizeof(addrSer));
addrSer.sin_family = AF_INET;
addrSer.sin_port = htons(PORT);
addrSer.sin_addr.s_addr = inet_addr(IP); socklen_t len = sizeof(sockaddr_in); int Ret = connect(sockCli,(sockaddr*)&addrSer,len);
if(Ret != 0)
{
close(sockCli);
return -1;
}
char serbuff[]="liuhuiyan";
char clibuff[255];
while(1)
{
write(sockCli,serbuff,strlen(serbuff)+1);
read(sockCli,clibuff,sizeof(clibuff));
cout<<clibuff<<endl;
sleep(1);
}
return 0;
}
//Makefile
SER=ser
CLI=cli
CC=g++
Status=-g all:$(CLI) $(SER)
.PHONY:all $(SER):$(SER).cpp
@$(CC) -o $@ $^ $(Status)
$(CLI):$(CLI).cpp
@$(CC) -o $@ $^ $(Status) .PHONY:clean
clean:
rm -rf *.o $(SER) $(CLI)

最新文章

  1. python类中super()和__init__()的区别
  2. python时间时分秒与秒数的互相转换
  3. Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例
  4. Composite模式
  5. paip.点击每个网页链接都提示下载的解决。
  6. Alice and Bob
  7. iOS 应用性能测试的相关方法、工具及技巧
  8. HDU ACM 1098 Ignatius&amp;#39;s puzzle
  9. Cocos2d-x 多分辨率适配完全解析
  10. 一、Snapman多人协作电子表格之——Snapman自我介绍
  11. Windbg程序调试系列4-Live Debugging
  12. Java核心技术及面试指南 线性表方面的面试题总结以及答案
  13. Nginx记录-Nginx基础(转载)
  14. 项目实战安装工具箱Busybox
  15. KM算法及其应用
  16. python基础之字符串以及切片等操作
  17. C++快速开发样本工程的建立--编写常用组件
  18. XVAG音频文件格式提取
  19. I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA 问题
  20. iptables 安全

热门文章

  1. grunt---grunt_test 测试用例
  2. IOS 自动布局-UIStackPanel和UIGridPanel(三)
  3. 【死磕 Spring】
  4. CSAPP学习笔记—虚拟内存
  5. Charlie&#39;s Change(完全背包记录路径)
  6. 2011 Michigan Invitational Programming Contest
  7. 在LoadRunner中执行命令行程序之:popen()取代system()
  8. 【Luogu】P2704炮兵阵地(状压DP)
  9. 写给新员工的十点SQL开发建议
  10. BZOJ 3850: ZCC Loves Codefires【贪心】