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 开发测试的更多相关文章

  1. (转载)loadrunner简单使用——HTTP,WebService,Socket压力测试脚本编写

    原文出处:http://ajita.iteye.com/blog/1728243/ 先说明一下,本人是开发,对测试不是特别熟悉,但因工作的需要,也做过一些性能测试方面的东西.比较久之前很简单的用过,最 ...

  2. Loadrunner开发测试脚本

    Loadrunner开发测试脚本 开发测试脚本可以通过录制,也可以手动开发,建议能录制的尽量录制,省时省力,不能录制的只能费力自己开发了,具体看项目情况来决定. 使用Loadrunner开发脚本过程中 ...

  3. IOS socket开发基础

    摘要 详细介绍了iOS的socket开发,说明了tcp和udp的区别,简单说明了tcp的三次握手四次挥手,用c语言分别实现了TCPsocket和UDPsocket的客户端和服务端,本文的作用是让我们了 ...

  4. 老司机带你用vagrant打造一站式python开发测试环境

      前言 作为一个学习和使用Python的老司机,好像应该经常总结一点东西的,让新司机尽快上路,少走弯路,然后大家一起愉快的玩耍. 今天,咱们就使用vagrant配合xshell打造一站式Python ...

  5. Android Socket 开发技术

    根据之前的经验,应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTP GET和POST请求,然后就是WebServic ...

  6. 开发测试时给 Kafka 发消息的 UI 发送器――Mikasa

    开发测试时给 Kafka 发消息的 UI 发送器――Mikasa 说来话长,自从入了花瓣,整个人就掉进连环坑了. 后端元数据采集是用 Storm 来走拓扑流程的,又因为 @Zola 不是很喜欢 Jav ...

  7. Socket开发

    Socket开发框架之消息的回调处理 伍华聪 2016-03-31 20:16 阅读:152 评论:0     Socket开发框架之数据加密及完整性检查 伍华聪 2016-03-29 22:39 阅 ...

  8. 基于.net的微服务架构的开发测试环境运维实践

    眼下,做互联网应用,最火的架构是微服务,最热的研发管理就是DevOps, 没有之一.微服务.DevOps已经被大量应用,它们已经像传说中的那样,可以无所不能.特来电云平台,通过近两年多的实践,发现完全 ...

  9. [DeeplearningAI笔记]ML strategy_2_2训练和开发/测试数据集不匹配问题

    机器学习策略-不匹配的训练和开发/测试数据 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.4在不同分布上训练和测试数据 在深度学习时代,越来越多的团队使用和开发集/测试集不同分布的数据来 ...

随机推荐

  1. Maven--配置 Maven 从 Nexus 下载构件

    在 POM 中配置: <project> ... <repositories> <repository> <id>nexus</id> &l ...

  2. matlab中画一条折线时怎样显示出每个点折点的数值

    举个例子: num=[5,44,62,154,264,365,398,480,619,705,762,728,669,726,890,731,707,696,558,509,444];date=[1. ...

  3. uploadifive使用笔记

    官网地址:http://www.uploadify.com/ uploadifive 是基于H5开发,所以支持移动端和PC端 <input type="file" name= ...

  4. MyBatis从入门到精通(第2章):MyBatis XML方式的基本用法【insert用法、update用法、delete用法】

    2.4  insert 用法 2.4.1  简单的 insert方法 在接口 UserMapper.java 中添加如下方法. /** * 新增用户 * @param sysUser * @retur ...

  5. 虚函数重载(overwrite) 继承覆盖问题

    引言 类接口需要添加默认参数,以适应不同情况调用, 但是clang-tidy 不允许在接口上设置默认参数,ps: 可能担心继承类里接口重新设置新默认参数而导致误用的情况 #include <st ...

  6. 2019年java后端年终总结(六年开发经验),送给正在努力的你

    长大之后,时间总是过得飞快,转眼之间,今年已经只剩下1天了.小时候总感觉遥不可及.只在科幻小说里面出现的2020年,已经开始进入蓄力期了. 这篇文章主要和大家聊一聊分析2019年java技术的更新给大 ...

  7. JavaSE--Java 的基本程序设计结构

    Java 对大小写敏感 Java 中定义类名的规则很宽松.名字必须以字母开头,后面可以跟字母和数字的任意组合.长度基本上没有限制.但是不能使用 Java 保留字作为类名. 标准的命名规范为:类名是以大 ...

  8. MySQL--数据插入

    1.创建表的同时插入其他表的数据 CREATE TABLE table_name SELECT ... FROM    ... [...] 例: CREATE TABLE tabl_memory EN ...

  9. Microsoft .NET Framework 4.5.2 (Offline Installer)

    Microsoft .NET Framework 4.5.2 (Offline Installer) for Windows Vista SP2, Windows 7 SP1, Windows 8, ...

  10. a标签的一些特殊使用

    <a href="tel:10086">10086</a> //点击后直接拨打10086  <a href="mailto:c1586@qq ...