转载链接:http://blog.163.com/caipeipei_love@126/blog/static/2596603220101118433940/

tcpserver.c

#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>
#include<unistd.h>
#include<arpa/inet.h>
#define portnumber 8080
int main(int argc ,char *argv[])
{int sockfd,new_fd;struct sockaddr_in server_addr;struct sockaddr_in client_addr;int sin_size,iDataNum;
//    const char hello[]="Hello cpp, you are success.\n";char buffer[4096];if(argc!=2){fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]);return 0;}// if((portnumber=atoi(argv[1]))<0)// {//    fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]);
//  return 0;//  }if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){fprintf(stderr,"Socket error:%s\n\a",strerror(errno));return 0;}bzero(&server_addr,sizeof(struct sockaddr_in));server_addr.sin_family=AF_INET;server_addr.sin_addr.s_addr=htonl(INADDR_ANY);server_addr.sin_port=htons(portnumber);if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1){fprintf(stderr,"Bind error:%s\n\a",strerror(errno));return 0;}if(listen(sockfd,5)==-1){fprintf(stderr,"Listen error:%s\n\a",strerror(errno));return 0;}while(1){sin_size=sizeof(struct sockaddr_in);if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))==-1){fprintf(stderr,"Accept error:%s\n\a",strerror(errno));return 0;}fprintf(stdout,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr));iDataNum=recv(new_fd,buffer,4096,0);if(iDataNum<0){perror("Recv\n");exit(1);}printf("Recv data is %s\n",buffer);send(new_fd,buffer,sizeof(buffer),0);
// if(write(new_fd,hello,strlen(hello))==-1)
// {
//      fprintf(stderr,"write error:%s\n",strerror(errno));
//      return 0;
// }close(new_fd);}close(sockfd);// exit(0);return 0;
}

tcpclient.c

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<netdb.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<errno.h>int main(int argc,char *argv[])
{int sockfd;char sendbuffer[200];char recvbuffer[200];//  char buffer[1024];struct sockaddr_in server_addr;struct hostent *host;int portnumber,nbytes;if(argc!=3){fprintf(stderr,"Usage :%s hostname portnumber\a\n",argv[0]);exit(1);}if((host=gethostbyname(argv[1]))==NULL){herror("Get host name error\n");exit(1);}if((portnumber=atoi(argv[2]))<0){fprintf(stderr,"Usage:%s hostname portnumber\a\n",argv[0]);exit(1);}if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){fprintf(stderr,"Socket Error:%s\a\n",strerror(errno));exit(1);}bzero(&server_addr,sizeof(server_addr));server_addr.sin_family=AF_INET;server_addr.sin_port=htons(portnumber);server_addr.sin_addr=*((struct in_addr *)host->h_addr);if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1){fprintf(stderr,"Connect error:%s\n",strerror(errno));exit(1);}while(1){printf("Please input your word:\n");scanf("%s",sendbuffer);printf("\n");if(strcmp(sendbuffer,"quit")==0)break;send(sockfd,sendbuffer,sizeof(sendbuffer),0);recv(sockfd,recvbuffer,200,0);printf("recv data of my world is :%s\n",recvbuffer);}// if((nbytes=read(sockfd,buffer,1024))==-1)//{
// fprintf(stderr,"read error:%s\n",strerror(errno));
// exit(1);//  }// buffer[nbytes]='\0';// printf("I have received %s\n",buffer);close(sockfd);exit(0);
}

首先要编译tcpserver.c,命令:

gcc -g tcpserver.c -o tcpserver

./tcpserver 8080

然后再编译tcpclient.c,具体命令:

gcc -g tcpclient.c -o tcpclient

./tcpclient localhost 8080

Simple TCP Server Client Socket C相关推荐

  1. epoll 入门例子 tcp server/client

    原文: https://rebootcat.com/2020/09/26/epoll_examples/ 复习一下 上一篇博文 epoll原理深入分析 详细分析了 epoll 底层的实现原理,如果对 ...

  2. Python 下的 tcp server/client 通信

    说明:只做基础,不做延伸,直接上代码 1.源文件 server.py from socket import *server = socket(AF_INET, SOCK_STREAM) server. ...

  3. python tcp server_python scoket 编程 | tcp server client - 简明教程

    TCP 和 UDP 的区别 这两个协议都是传输层的协议,解决的问题,都是端口与端口的通信问题. TCP 每次建立通信,都需要三次握手,确定双方状态完毕,在发送数据.如果发送的数据出现了异常,TCP 也 ...

  4. TCP/UDP网络编程入门教程之二:TCP Server端——socket与文件描述符

    UNIX中的一切事物都是文件(everything in Unix is a file!) 当我在这篇教程中提到UNIX的时候,其意思专指符合UNIX标准的所谓"正统"UNIX的衍 ...

  5. 1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client

     1  Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端 ...

  6. linux c语言tcp,我个人的Linux TCP server和client测试源码,C语言(2)(★firecat推荐★)...

    1.直接上TCP Server源码,这种方法没有使用向muduo那样的活塞式buffer,可谓简单粗暴: #include #include #include #include #include #i ...

  7. nodejs TCP server和TCP client如何建立连接

    首先客户端和服务器端通信得需要一个消息结构,我用如下的构造函数创建一个消息结构,包含消息正文和消息类型(method): function message(_data,_method = '') {_ ...

  8. socket 编程入门教程(一)TCP server 端:7、接收与发送

    现在,我们通过accept()创建了新的socket,也就是我们类中的数据成员communicationSock,现在,我们就可以通过这个socket进行通讯了. TCP通讯模型 在介绍函数之前,我们 ...

  9. socket 编程入门教程(一)TCP server 端:6、创建“通讯 ”嵌套字

    这里的"通讯"加上了引号,是因为实际上所有的socket都有通讯的功能,只是在我们的例子中,之前那个socket只负责listen,而这个socket负责接受信息并echo回去. ...

最新文章

  1. 每年颁发两个图灵奖?
  2. 企业网络推广专员浅析有利于企业网络推广的页面制作技巧有哪些?
  3. 20220209-CTF-MISC-BUUCTF-修改图片宽高--ARCHPR工具的使用
  4. 计算机教学学生创新能力,职业技术学校创新能力计算机教学论文
  5. 【转】mybatis 自增主键配置
  6. Android 旋转木马轮播,jQuery旋转木马式幻灯片轮播特效
  7. ubuntu下使用screen用不关闭
  8. 怎样压缩PPT文件的体积
  9. 适合运动的无线蓝牙耳机有哪些,运动无线蓝牙耳机推荐
  10. w7旗舰版的计算机管理,win7旗舰版系统获取administrator权限的方法
  11. 两台windows电脑互相备份
  12. 小白白红队初成长(1)被动信息收集
  13. 下一个颠覆的领域:区块链如何影响审计行业?(中)
  14. 8-CSS布局之浮动布局
  15. python在线编译器简单实现
  16. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数015,vector矢量
  17. C语言将十进制转换成十六进制
  18. jmeter-跨线程组调用token
  19. Netbeans常用快捷键及全部快捷键
  20. java中di,初识Spring的DI及其基本用法

热门文章

  1. 计算机组装维修中级试题,计算机维修工中级理论知识试卷.doc
  2. 2字段添加注释_Tableau学习系列(7):计算字段
  3. Linux LCD 驱动实验
  4. Ubuntu开启NFS、SSH服务(驱动开发用到、电脑端登录ARM板用到)
  5. 数据结构——链式队列解析(C语言版)
  6. 文件系统模拟程序python_如何使用sh实现Python虚拟文件系统
  7. mysql报错注入实战_MySQL手工注入实战
  8. java删除字符串最后一位
  9. oracle 11g 修改 sga,oracle 11g 调整SGA
  10. 操作系统:体验Windows 11,不到1M的小工具来了!