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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于dnn的车牌识别_自然场景中文文字识别,身份证火车票都能识别

图像处理中OCR(Optical Character Recognition光学字符识别)场景非常多&#xff0c;也给大家的工作生活带来了很多便利&#xff0c;比如车牌识别就能管理停车场车辆的出入&#xff0c;快递时只需给一个带有快递信息的图就能自动解析上传发件信息和收件信息&#xff0c;再比如我…

年末的大厂前端面试总结(20届双非二本)-终入字节

关注若川视野, 回复"pdf" 领取资料&#xff0c;回复"1"&#xff0c;可加群长期交流学习自我介绍双非二本,软件工程,自学前端,今年毕业。喜欢编程,古风,日语和英语。常以冷月心之名混迹前端江湖,也曾在混迹网文圈时用冷月心做笔名签约掌阅,作品《清起风云》…

面试题(转的)

第一组   1.烧一根不均匀的绳&#xff0c;从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子&#xff0c;问如何用烧绳的方法来计时一个小时十五分钟呢?  2.你有一桶果冻&#xff0c;其中有黄色、绿色、红色三种&#xff0c;闭上眼睛抓取同种颜色的两个。抓取多少个…

python三酷猫_洛克王国三代酷猫登场 冰水酷猫解析

洛克王国三代酷猫登场 冰水酷猫解析 洛克王国三代武斗酷猫解析三代水灵&#xff0c;在哥斯拉的倾情推荐下&#xff0c;小洛克们都已经很熟悉了吧&#xff01;那和水灵同一期出现的帅哥——武斗酷猫&#xff0c;如果三代遗传了&#xff0c;会怎么样呢&#xff1f;小洛克们一起来…

Linux禁止用户登录

转载链接&#xff1a;http://blog.sina.com.cn/s/blog_4cebadd10100a9bl.html 我们在做系统维护的时候&#xff0c;希望个别用户或者所有用户不能登录系统&#xff0c;保证系统在维护期间正常运行。这个时候我们就要禁止用户登录。 1、禁止个别用户登录。比如禁止lynn用户登录…

.NET常用功能和代码[总结与收藏]

1. 打开新的窗口并传送参数&#xff1a; 传送参数&#xff1a;response.write("<script>window.open(*.aspx?id"this.DropDownList1.SelectIndex"&id1"...")</script>") 接收参数&#xff1a;string a Request.QueryString(&q…

topcoder srm 305 div1

problem1 link 直接按照题意模拟即可。 import java.util.*; import java.math.*; import static java.lang.Math.*;public class UnfairDivision {public int albertsShare(int[] assets) {final int nassets.length;for(int i1;i<n;i) {assets[i]assets[i-1];}int result0…

动图演示23个鲜为人知的VSCode快捷键

原文地址&#xff1a;https://dev.to/devmount/23-lesser-known-vs-code-shortcuts-as-gif-80尽管我在VS Code中经常使用许多快捷方式&#xff0c;以下快捷方式可能会派上用场&#xff0c;但我经常忘记它们的存在。我制作了一些GIF&#xff0c;以便更好地记住它们。也许这里面也…

使用C语言进行面向对象的开发--GObject入门[5]

转载请注明出处 blog.csdn.net/pingf0 或www.cnblogs.com/pingf 接上文这一部分简要介绍下类的析构&#xff0c;或者成为终结。还是多说几句&#xff0c;也算是对前文的补充1.生成一个类是由父到子&#xff0c;析构的时候自然与之相对是由子到父。2.GObject的内存管理并没有采用…

python结课报告_Python数据分析课程到底是学什么内容的?

2020年12月4日&#xff0c;博为峰旗下学掌门召开了《Python 商业(大)数据分析师》新课程发布会。据悉&#xff0c;此次发布会上发布的《Python 商业(大)数据分析师》课程是在原《数据分析师》课程上进行了全面升级。在发布会上博为峰副总经理王琰表示&#xff0c;在未来学掌门作…

linux禁止root用户直接登录sshd并修改默认端口

转载链接&#xff1a;http://jingyan.baidu.com/article/a681b0de3a657c3b184346d9.html linux最高权限用户root&#xff0c;默认可以直接登录sshd。为了提高服务器的安全度&#xff0c;需要对它进行禁止&#xff0c;使得攻击者无法通过暴力破解来获取root权限。 1,新建一个用…

面试官问:能否模拟实现JS的bind方法(高频考点)

可以点击上方的话题JS基础系列&#xff0c;查看往期文章写于2018年11月21日&#xff0c;发布在掘金阅读量1.3w前言这是面试官问系列的第二篇&#xff0c;旨在帮助读者提升JS基础知识&#xff0c;包含new、call、apply、this、继承相关知识。面试官问系列文章如下&#xff1a;感…

推荐一个ASP.NET的资源网站

推荐一个ASP.NET的资源网站&#xff1a;ASP.NET屋-专业的ASP.NET学习,ASP.NET源码,ASP.NET演示,MVC,Silverlight,JQuery,EXTJS,软件设计网站 http://www.aspx58.com.cn/ 转载于:https://www.cnblogs.com/yuyichen/archive/2009/11/26/1611682.html

连续投影算法_中航国画荣获“2020 IAV国际视听嘉年华” 大屏幕投影显示行业三大奖项!...

近日&#xff0c;“2020IAV国际视听嘉年华”在深圳湾创新生态园隆重举行&#xff0c;航空工业上电下属子公司中航国画作为2020年迪拜世博会中国馆官方合作伙伴应邀参加此次高峰论坛&#xff0c;并在展会期间凭借4K系列双色激光工程投影机、LP160UL系列超高亮度双色激光工程投影…

Linux 系统备份恢复工具 SYSTEM-RESCUE-CD 的使用

测试系统&#xff1a;linux-debian 备份系统 1、插入dd有systemrescuecd-x86-4.0.1.iso的系统备份恢复U盘&#xff1b; 2、开机按DEL进入BIOS&#xff0c;设置BOOT为USB-HDD启动。Save&Exit&#xff1b; 3、进入备份恢复系统界面&#xff1a;----------------------------…

CMDB功能分析与实现方案

CMDB功能分析与实现方案 CMDB系统的主要功能 1.用户管理,记录测试,开发,运维人员的用户表 2.业务线管理,记录业务的详情 3.项目管理,指定此项目属于那一条业务线 4.应用管理,指定此应用的开发人员 5.主机管理,记录主机管理员,连接的网络设备,存储,云主机,物理主机等信息 6.主机…

感冒

看好这个网页&#xff0c;你的感冒就好了转载于:https://www.cnblogs.com/baoguo/archive/2009/11/27/1612308.html

python numpy矩阵索引_Numpy中的矩阵索引

索引后查看形状&#xff1a;In [295]: Anp.matrix([1,2,3])In [296]: A.shapeOut[296]: (1, 3)In [297]: A[0]Out[297]: matrix([[1, 2, 3]])In [298]: A[0].shapeOut[298]: (1, 3)这种行为的关键是np.matrix始终是2d&#xff0c;所以即使选择一行(A[0,:])&#xff0c;结果仍然…

他的前端焦虑:30岁以后的前端路怎么走? 你想过吗~

马云曾说&#xff0c;员工的离职原因很多&#xff0c;唯两点最真实&#xff1a;一是钱&#xff0c;没给到位&#xff1b;二是心&#xff0c;委屈了。当时间来到了年末&#xff0c;离职、跳槽、年终奖又成了年终热词&#xff0c;而此时辞职好似成为了一场勇敢者的游戏&#xff0…