c socket 开发测试
c语言异常
参照他人代码写一个tcp的 socket 开发测试
异常A,在mac osx系统下编译失败,缺库转到debian下。
异常B,include引用文件顺序不对,编译大遍异常
异常C,/usr/include/x86_64-linux-gnu/sys/types.h:34:1: error: unknown type name ‘__u_char’ 文件前注释的问题,删掉注释则通过
服务端
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <errno.h>
#include <stdio.h>
int accepthandle(int acceptpoint);
int main(void) {
//服务端socket
int socketfid;
char buf[];
struct sockaddr_in server_add;
char * localaddr = "127.0.0.1";//
int pid;
struct sockaddr_in client_add; server_add.sin_family=AF_INET;
server_add.sin_port=htons();
server_add.sin_addr.s_addr=htonl(INADDR_ANY); socketfid=socket(AF_INET,SOCK_STREAM,);
printf("socket start \n");
if (socketfid < ) {
printf("socket error \n");
return -;
}
printf("bind start \n");
if(bind(socketfid,(struct sockaddr *)&server_add,sizeof(struct sockaddr))<){
printf("bind error \n");
return -;
}
//监听套接子
printf("listen start \n");
if(listen(socketfid,)<){
printf("listen error \n");
return -;
}
printf("accept start \n");
while(){
memset(&client_add, , sizeof(client_add));
int leng=sizeof(client_add);
int acceptresult=accept(socketfid,(struct sockaddr *) &client_add,&(leng)); if (acceptresult < ) {
printf("accept error %d %d is sub\n", acceptresult,pid);
//子进程结束了
exit();
}
printf("clent addr%s porit %d\n",
inet_ntop(AF_INET, &client_add.sin_addr, buf, sizeof(buf)),
ntohs(client_add.sin_port));
pid = fork();
printf("%d\n",pid);
if (pid < ) {
printf("pid<0\n");
close(acceptresult);
}
else if(pid == ){
printf("pid=0 is sub \n");
//子进程停止监听,去处理接收数据
close(socketfid);
//子进程到了这里,执行完接收后,继续执行while 但是因为socketfid 已经关闭,accept 返回异常 -1 直接执行exit(0) 退出了子进程
accepthandle(acceptresult);
} else{
//父进程到了这里,执行完这一步,继续while 到accept这里,又被阻塞。如此循环。
//这里错打印不出结果,可能是shell只能展示一个进程的内容。
printf("pid is parent\n");
}
}
return EXIT_SUCCESS;
}
int accepthandle(int acceptpoint){
char buf[];
int readresult;
while(){
readresult=read(acceptpoint,buf,sizeof(buf));
if(readresult<){
printf("read error \n");
close(acceptpoint);
break;
}
else if (readresult==){
printf("client exit \n");
close(acceptpoint);
break;
}
else{
printf("client:%s\n", buf);
if (strcmp("exit", buf) == ) {
printf("exit \n");
close(acceptpoint);
return ;
} } }
return ;
}
client
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <stdio.h>
int main(void) {
int socketfid;
char buf[];
struct sockaddr_in server_add;
char * localaddr = "127.0.0.1";//
server_add.sin_family=AF_INET;
server_add.sin_port=htons();
server_add.sin_addr.s_addr=htonl(INADDR_ANY);
socketfid=socket(AF_INET,SOCK_STREAM,);
while (connect(socketfid,(struct sockaddr*)&server_add,sizeof(server_add))==-){
printf("Connect Error!\n");
}
char *data="hello word";
printf("length %d!\n",sizeof(data));
send( socketfid,data,sizeof(data),);
printf("bind start \n"); close(socketfid); return EXIT_SUCCESS;
}
c socket 开发测试的更多相关文章
- (转载)loadrunner简单使用——HTTP,WebService,Socket压力测试脚本编写
原文出处:http://ajita.iteye.com/blog/1728243/ 先说明一下,本人是开发,对测试不是特别熟悉,但因工作的需要,也做过一些性能测试方面的东西.比较久之前很简单的用过,最 ...
- Loadrunner开发测试脚本
Loadrunner开发测试脚本 开发测试脚本可以通过录制,也可以手动开发,建议能录制的尽量录制,省时省力,不能录制的只能费力自己开发了,具体看项目情况来决定. 使用Loadrunner开发脚本过程中 ...
- IOS socket开发基础
摘要 详细介绍了iOS的socket开发,说明了tcp和udp的区别,简单说明了tcp的三次握手四次挥手,用c语言分别实现了TCPsocket和UDPsocket的客户端和服务端,本文的作用是让我们了 ...
- 老司机带你用vagrant打造一站式python开发测试环境
前言 作为一个学习和使用Python的老司机,好像应该经常总结一点东西的,让新司机尽快上路,少走弯路,然后大家一起愉快的玩耍. 今天,咱们就使用vagrant配合xshell打造一站式Python ...
- Android Socket 开发技术
根据之前的经验,应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTP GET和POST请求,然后就是WebServic ...
- 开发测试时给 Kafka 发消息的 UI 发送器――Mikasa
开发测试时给 Kafka 发消息的 UI 发送器――Mikasa 说来话长,自从入了花瓣,整个人就掉进连环坑了. 后端元数据采集是用 Storm 来走拓扑流程的,又因为 @Zola 不是很喜欢 Jav ...
- Socket开发
Socket开发框架之消息的回调处理 伍华聪 2016-03-31 20:16 阅读:152 评论:0 Socket开发框架之数据加密及完整性检查 伍华聪 2016-03-29 22:39 阅 ...
- 基于.net的微服务架构的开发测试环境运维实践
眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...
- [DeeplearningAI笔记]ML strategy_2_2训练和开发/测试数据集不匹配问题
机器学习策略-不匹配的训练和开发/测试数据 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.4在不同分布上训练和测试数据 在深度学习时代,越来越多的团队使用和开发集/测试集不同分布的数据来 ...
随机推荐
- Dynamics CRM - 在 C# Plugin 里以 System Administrator 权限来更新 Entity
场景说明: 1.在使用 CRM 系统时,经常会有需要在某个 Entity 下对其他 Entity 的 Record 进行更新,或者在 post 中对自身进行更新,这里就需要用到 SDK 上的 upda ...
- 为什么在SSM中的dao层不用写@Repository注解
1. Mybatis 接口编程中dao 层接口没有注解和 为什么能被实例化为bean? 在Spring配置Mybatis的文件中我们可以看到如下代码: <bean class="or ...
- python开源库——h5py快速指南
1. 核心概念 一个HDF5文件是一种存放两类对象的容器:dataset和group. Dataset是类似于数组的数据集,而group是类似文件夹一样的容器,存放dataset和其他group.在使 ...
- 生产事故(MongoDB数据分布不均解决方案)
可以很明显可以看到我们这个集合的数据严重分布不均匀. 一共有8个分片,面对这个情况我首先想到的是手动拆分数据块,但这不是解决此问题的根本办法. 造成此次生产事故的首要原因就是片键选择上的问题,由于片键 ...
- java使用HSSFWorkbook下载Excel表格
@RequestMapping(value = "/exportVectorExcelN", method = RequestMethod.GET) @ResponseBody @ ...
- Java 14 有哪些新特性?
记录为 Java 提供了一种正确实现数据类的能力,不再需要为实现数据类而编写冗长的代码.下面就来看看 Java 14 中的记录有哪些新特性. 作者 | Nathan Esquenazi 译者 | 弯月 ...
- Django专题-AJAX
AJAX准备知识:JSON 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JS ...
- 第一章 mysql 的架构与历史
一.mysql 的逻辑架构 1.连接管理与安全性 2.优化与执行 二.并发控制 1.读写锁 2.锁粒度 三.事物 1.隔离级别 2.死锁 3.事物日志 四.多版本并发控制 五.Mysql 的存储引擎
- GCC编译和链接多个文件(包括源文件、目标文件、汇编文件等)
编译多个源代码文件会生成多个目标文件,每个目标文件都包含一个源文件的机器码和相关数据的符号表.除非使用-c选项指示 GCC 只编译不链接,否则 GCC 会使用临时文件作为目标文件输出: $ gcc - ...
- HDU - 4578 线段树+三重操作
这道题自己写了很久,还是没写出来,也看了很多题解,感觉多数还是看的迷迷糊糊,最后面看到一篇大佬的才感觉恍然大悟. 先上一篇大佬的题解:https://blog.csdn.net/aqa20372995 ...