本代码为老师提供的示例程序

一、TCP socket 编程模型

二、使用TCP协议实现一个简单的通讯程序
1.服务器端

#include<stdlib.h>
#include<stdio.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<unistd.h>
#include<netinet/in.h>
#include<arpa/inet.h>#define PORT 8900int main(int argc,char** argv)
{struct sockaddr_in server;struct sockaddr_in client;int len;int port;int listend;int connectd;int sendnum;int opt;int recvnum;char send_buf[2048];char recv_buf[2048];port= PORT;memset(send_buf,0,2048);memset(recv_buf,0,2048);opt = SO_REUSEADDR;if (-1==(listend=socket(AF_INET,SOCK_STREAM,0))){perror("create listen socket error\n");exit(1);}setsockopt(listend,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));memset(&server,0,sizeof(struct sockaddr_in));server.sin_family = AF_INET;server.sin_addr.s_addr = htonl(INADDR_ANY);server.sin_port = htons(port);if (-1==bind(listend,(struct sockaddr *)&server,sizeof(struct sockaddr))){perror("bind error\n");exit(1);}if (-1==listen(listend,5)){perror("listen error\n");exit(1);}while (1){if (-1==(connectd=accept(listend,(struct sockaddr*)&client,&len))){perror("create connect socket error\n");continue;}sendnum = sprintf(send_buf,"hello,the guest from %s\n",inet_ntoa(client.sin_addr));if ( 0 >send(connectd,send_buf,sendnum,0)){perror("send error\n");close(connectd);continue;}if (0>(recvnum = recv(connectd,recv_buf,sizeof(recv_buf),0))){perror("recv error\n");close(connectd);continue;}recv_buf[recvnum]='\0';printf ("the message from the client is: %s\n",recv_buf);if (0==strcmp(recv_buf,"quit")){perror("the client break the server process\n");close(connectd);break;}sendnum = sprintf(send_buf,"%s\n",recv_buf);send(connectd,send_buf,sendnum,0);close(connectd);continue;}close(listend);return 0;
}

2.客户端

#include<stdlib.h>
#include<stdio.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<unistd.h>
#include<netinet/in.h>
#include<arpa/inet.h>#define PORT 8900void print_usage(char * cmd)
{fprintf(stderr," %s usage:\n",cmd);fprintf(stderr,"%s IP_Addr [port]\n",cmd);}int main(int argc,char** argv)
{struct sockaddr_in server;int ret;int len;int port;int sockfd;int sendnum;int recvnum;char send_buf[2048];char recv_buf[2048];if ((2>argc)|| (argc >3)){print_usage(argv[0]);exit(1);}if (3==argc) {port = atoi(argv[2]);}if (-1==(sockfd=socket(AF_INET,SOCK_STREAM,0))){perror("can not create socket\n");exit(1);}memset(&server,0,sizeof(struct sockaddr_in));server.sin_family = AF_INET;server.sin_addr.s_addr = inet_addr(argv[1]);server.sin_port = htons(port);if (0>(ret=connect(sockfd,(struct sockaddr*)&server,sizeof(struct sockaddr)))){perror("connect error");close(sockfd);exit(1);}printf("what words do  you want to tell to server:\n");fgets(send_buf,2048,stdin);if (0>(len=send(sockfd,send_buf,strlen(send_buf),0))){perror("send data error\n");close(sockfd);exit(1);}if (0>(len=recv(sockfd,recv_buf,2048,0))){perror("recv data error\n");close(sockfd);exit(1);}recv_buf[len]='\0';printf("the message from the server is:%s\n",recv_buf);close(sockfd);}

三、运行结果

TCP socket 编程示例相关推荐

  1. 转Go语言TCP Socket编程

    授权转载: Tony Bai 原文连接: https://tonybai.com/2015/11/17/tcp-programming-in-golang/ Golang的主要 设计目标之一就是面向大 ...

  2. golang TCP Socket编程

    Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分.在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均 ...

  3. Go语言TCP Socket编程

    2019独角兽企业重金招聘Python工程师标准>>> Go语言TCP Socket编程 Golang的 主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不 ...

  4. 基于TCP,Socket编程,模仿腾讯QQ界面,使用Java开发的一款网络聊天工具。QQ_Chat

    代码下载地址 原博客地址 QQ_Chat 基于TCP,Socket编程,模仿腾讯QQ界面,使用Java开发的一款网络聊天工具. (内含报告) 工具: Eclipse.Navicat for MySQL ...

  5. TCP socket编程记录(C语言)

    最近使用到TCP的socket编程,记录一下思路. TCP Socket 服务器编程思路 0.初始化套接字库 1.创建套接字----------2个(服务器本身需要一个套接字,客户端要返回一个套接字) ...

  6. TCP/IP详解 第十二章(10) TCP Socket 编程

    前言 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 TCP 如初恋. 遥想小林当年校招时常因 TCP 面试题被刷, ...

  7. python回声程序echo 一行代码_Python Socket 编程示例 Echo Server

    简评:我们已经从「Python Socket 编程概览」了解了 socket API 的概述以及客户端和服务器的通信方式,接下来让我们创建第一个客户端和服务器,我们将从一个简单的实现开始,服务器将简单 ...

  8. PHP socket编程示例

    写在前面:最级要开始写我们的项目了,是一个网络编程的项目,语言用C++,基于Socket通信,采用JSON数据交换格式,存数据用Mysql数据库.我们开始的困难是不知道如何处理客户端,组内都没有学写A ...

  9. 多线程Java Socket编程示例(转)

    这篇做为学习孙卫琴<<Java网络编程精解>>的学习笔记吧.其中采用Java 5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送 ...

最新文章

  1. 大赛季(2020)新一代信息技术行业赛赛事公告
  2. JAVA——DES/ECB/PKCS7Padding加密算法[Cannot find any provider supporting DESEDE/CBC/PKCS7Padding]解决方案
  3. TypeScript Partial 使用的一个小技巧
  4. C#操作SQLite数据库增、删、改、查 实例
  5. ELK系列(1) - Elasticsearch + Logstash + Kibana + Log4j2快速入门与搭建用例
  6. java 特殊字符过滤器_java处理url中的特殊字符
  7. 事件---------2
  8. 设备树与驱动的关系_9 Linux设备树的原理与应用实例(一)—— 什么是设备树...
  9. 前端开发学java_Java前端开发需要学习什么
  10. 企业如何应用ERP?企业应用ERP流程详解。
  11. Python3.GrADS的二进制码数据
  12. 如何比对excel表格两列数据中的相同部分或重复部分
  13. JRebel出现ERROR Failed to obtain seat. Unable to connect to license server
  14. prometheus常用函数详解
  15. 点云八个方向极值点获取
  16. mysql实现物化视图详解及视图与物化视图区别
  17. OpenSSL生成CA自签名根证书和颁发证书和证书提取
  18. 学校招聘行政老师的计算机能力测试,【】计算机教师招聘试题(25页)-原创力文档...
  19. 本科科研经历(技术干货篇-论文发表流程)
  20. Python发送网易邮件554错误解决

热门文章

  1. [勇者闯LeetCode] 125. Valid Palindrome
  2. SQL约束名创建与修改添加
  3. 快速上手Django(一) 项目结构、开发环境、开发流程、视图、视图集
  4. 深度学习面试:用猫和狗的数据做图像分类,分类的效果不好怎么办?
  5. win11系统好用的几个快捷键——常用
  6. Katalon-参数化
  7. Words for Games
  8. 实现html移动端自适应
  9. 计算机科技文化节宣传标语,校园科技文化艺术节宣传标语
  10. 解构华为2014轮值CEO徐直军战略发言