Simple TCP Server Client Socket C
转载链接: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相关推荐
- epoll 入门例子 tcp server/client
原文: https://rebootcat.com/2020/09/26/epoll_examples/ 复习一下 上一篇博文 epoll原理深入分析 详细分析了 epoll 底层的实现原理,如果对 ...
- Python 下的 tcp server/client 通信
说明:只做基础,不做延伸,直接上代码 1.源文件 server.py from socket import *server = socket(AF_INET, SOCK_STREAM) server. ...
- python tcp server_python scoket 编程 | tcp server client - 简明教程
TCP 和 UDP 的区别 这两个协议都是传输层的协议,解决的问题,都是端口与端口的通信问题. TCP 每次建立通信,都需要三次握手,确定双方状态完毕,在发送数据.如果发送的数据出现了异常,TCP 也 ...
- TCP/UDP网络编程入门教程之二:TCP Server端——socket与文件描述符
UNIX中的一切事物都是文件(everything in Unix is a file!) 当我在这篇教程中提到UNIX的时候,其意思专指符合UNIX标准的所谓"正统"UNIX的衍 ...
- 1.socket编程:socket编程,网络字节序,函数介绍,IP地址转换函数,sockaddr数据结构,网络套接字函数,socket相关函数,TCP server和client
1 Socket编程 socket这个词可以表示很多概念: 在TCP/IP协议中,"IP地址+TCP或UDP端口号"唯一标识网络通讯中的一个进程,"IP 地址+端 ...
- linux c语言tcp,我个人的Linux TCP server和client测试源码,C语言(2)(★firecat推荐★)...
1.直接上TCP Server源码,这种方法没有使用向muduo那样的活塞式buffer,可谓简单粗暴: #include #include #include #include #include #i ...
- nodejs TCP server和TCP client如何建立连接
首先客户端和服务器端通信得需要一个消息结构,我用如下的构造函数创建一个消息结构,包含消息正文和消息类型(method): function message(_data,_method = '') {_ ...
- socket 编程入门教程(一)TCP server 端:7、接收与发送
现在,我们通过accept()创建了新的socket,也就是我们类中的数据成员communicationSock,现在,我们就可以通过这个socket进行通讯了. TCP通讯模型 在介绍函数之前,我们 ...
- socket 编程入门教程(一)TCP server 端:6、创建“通讯 ”嵌套字
这里的"通讯"加上了引号,是因为实际上所有的socket都有通讯的功能,只是在我们的例子中,之前那个socket只负责listen,而这个socket负责接受信息并echo回去. ...
最新文章
- 每年颁发两个图灵奖?
- 企业网络推广专员浅析有利于企业网络推广的页面制作技巧有哪些?
- 20220209-CTF-MISC-BUUCTF-修改图片宽高--ARCHPR工具的使用
- 计算机教学学生创新能力,职业技术学校创新能力计算机教学论文
- 【转】mybatis 自增主键配置
- Android 旋转木马轮播,jQuery旋转木马式幻灯片轮播特效
- ubuntu下使用screen用不关闭
- 怎样压缩PPT文件的体积
- 适合运动的无线蓝牙耳机有哪些,运动无线蓝牙耳机推荐
- w7旗舰版的计算机管理,win7旗舰版系统获取administrator权限的方法
- 两台windows电脑互相备份
- 小白白红队初成长(1)被动信息收集
- 下一个颠覆的领域:区块链如何影响审计行业?(中)
- 8-CSS布局之浮动布局
- python在线编译器简单实现
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数015,vector矢量
- C语言将十进制转换成十六进制
- jmeter-跨线程组调用token
- Netbeans常用快捷键及全部快捷键
- java中di,初识Spring的DI及其基本用法
热门文章
- 计算机组装维修中级试题,计算机维修工中级理论知识试卷.doc
- 2字段添加注释_Tableau学习系列(7):计算字段
- Linux LCD 驱动实验
- Ubuntu开启NFS、SSH服务(驱动开发用到、电脑端登录ARM板用到)
- 数据结构——链式队列解析(C语言版)
- 文件系统模拟程序python_如何使用sh实现Python虚拟文件系统
- mysql报错注入实战_MySQL手工注入实战
- java删除字符串最后一位
- oracle 11g 修改 sga,oracle 11g 调整SGA
- 操作系统:体验Windows 11,不到1M的小工具来了!