简陋版TCP回射程序

服务器端

#include <unistd.h>
#include <sys/socket.h>
#include <stdio.h>
#include <strings.h>
#include <iostream>
#include <netinet/in.h>
#include <stdlib.h>
#include <arpa/inet.h>
using namespace std;
int
main(int argc,char ** argv)
{
        struct sockaddr_in servaddr,cliaddr;
        bzero(&servaddr,sizeof(servaddr));
        if(argc==2)
                servaddr.sin_port=atoi(argv[1]);
        else if(argc==3){
                servaddr.sin_port=atoi(argv[2]);
                inet_pton(AF_INET,argv[1],&servaddr.sin_addr);
        }
        else{
                cout<<"USAGE: [<host>] <port>"<<endl;
                exit(0);
        }
        servaddr.sin_family=AF_INET;
        int fd;
        fd=socket(AF_INET,SOCK_STREAM,0);
        bind(fd,(struct sockaddr*)&servaddr,sizeof(servaddr));
        listen(fd,5);
        int connfd;socklen_t clilen;
        for(;;){
                connfd=accept(fd,(struct sockaddr*)&cliaddr,&clilen);
                cout<<"guess is coming"<<endl;
                char rbuf[2000],wbuf[2000];
                int n=-1;
                for(;;){
                        n=read(connfd,rbuf,2000);
                        if(n==0)
                                break;
                        write(connfd,rbuf,n);
                }
        }
}

客户端

#include "unp.h"
#include <iostream>
using namespace std;
int
main(int argc, char **argv)
{
        int fd,n;
        fd=socket(AF_INET,SOCK_STREAM,0);
        struct sockaddr_in servaddr;
        servaddr.sin_family=AF_INET;
        if(argc!=3){
                cout<<"USAGE:<host> <port>"<<endl;
                exit(0);
        }
        else{
                servaddr.sin_port=atoi(argv[2]);
                inet_pton(AF_INET,argv[1],&servaddr.sin_addr);
        }
        connect(fd,(struct sockaddr*)&servaddr,sizeof(servaddr));
        char wbuf[2000],rbuf[2000];

        while(fgets(wbuf,2000,stdin)!=NULL){
                write(fd,wbuf,strlen(wbuf));
                n=read(fd,rbuf,2000);
                fputs(rbuf,stdout);
        }
}

结果

image.png

image.png

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,178评论 6 13
  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 9,511评论 0 11
  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 1,250评论 0 10
  • 去年有段时间得空,就把谷歌GAE的API权威指南看了一遍,收获颇丰,特别是在自己几乎独立开发了公司的云数据中心之后...
    骑单车的勋爵阅读 20,696评论 0 41
  • 人的性格真的真的是可以改变的,只要你要改变是可以改变。不可能什么是不能改变的,只是你愿不愿意去改变而已。难道我们发...
    一棵樹阅读 97评论 0 0