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在不同分布上训练和测试数据 在深度学习时代,越来越多的团队使用和开发集/测试集不同分布的数据来 ...
随机推荐
- Java数据的存储
在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register).这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部.但是寄存器的数量极其有限,所以寄存器由编译器根据需求进 ...
- 从定时器的选型,到透过源码看XXL-Job(下)
透过源码看xxl-job (注:本文基于xxl-job最新版v2.0.2, quartz版本为 v2.3.1. 以下提到的调度中心均指xxl-job-admin项目) 上回说到,xxl-job是一个中 ...
- Dynamics CRM - 如何通过 C# Plugin 给 Contact的 主键(FullName)赋值
Contact 是 CRM 默认带有的 Entity,主键是 <FullName>,根据开发需求,与主键相关的字段都被设置成隐藏,包括了<Full Name>,<Firs ...
- idea代理上网
idea 代理上网 浏览器能够上网,idea无法下载jar 浏览器无法上网则配置浏览器代理 --------- start //------------------------浏览器代理完毕 idea ...
- (一)ORBSLAM2主要配置
(1)ORBSLAM2文件夹里面有个build.sh文件,里面主要是编译时终端需要执行的命令,这里把它们放到.sh文件中统一执行. (2)阅读ORBSLAM2的CmakeList可以知道运行ORBSL ...
- PAT Advanced 1041 Be Unique (20) [Hash散列]
题目 Being unique is so important to people on Mars that even their lottery is designed in a unique wa ...
- PIL对象和numpy三维数组的互相转换
#https://stackoverflow.com/questions/384759/how-to-convert-a-pil-image-into-a-numpy-array from PIL i ...
- day59-mysql-存储过程、函数、事务、锁、备份
存储过程.函数不是重要的内容. 三. 存储过程:类似于函数(方法),简单的说存储过程是为了完成某个数据库中的特定功能而编写的语句集合, 该语句集包括SQL语句(对数据的增删改查).条件语句和循环语句等 ...
- 题解 P2738 【[USACO4.1]篱笆回路Fence Loops】
这题是我期中测试的一题水题,然而英文题目太长了不想读...后面考完被同学提醒后20分钟切了(心塞) 切完看了波题解,发现貌似我的方法跟大家都不一样呢... 常规做法: \(Floyd\) 这个有三页的 ...
- Jupyter notebook 和 Jupyter lab 的区别
Jupyter Notebook Jupyter Notebook 是一个款以网页为基础的交互计算环境,可以创建Jupyter的文档,支持多种语言,包括Python, Julia, R等等.广泛用于数 ...