linux socket连接中 ERRNO错误
Connection refused:应该是连接的服务端没有启动或者连接端口错误,可以用如下代码测试
client端:
#include <stdio.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <strings.h>
#include <unistd.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
#include <errno.h>
#define PORT 1234
#define SERVER "10.1.70.21" int main()
{
int fd = socket(AF_INET, SOCK_STREAM, );
int nfd;
int ret;
struct sockaddr_in server_addr, client_addr;
bzero(&server_addr, sizeof(server_addr)); server_addr.sin_family =AF_INET;
server_addr.sin_port = htons(PORT);
inet_pton(AF_INET, SERVER, &server_addr.sin_addr);
//bind(fd, (struct sockaddr *)&server_addr, sizeof(server_addr));
errno = ;
ret = connect(fd, (struct sockaddr*)&server_addr, sizeof(server_addr));
if(ret == -)
{
perror("connect: ");
}
char buf[];
while()
{
bzero(buf, );
ret = read(STDIN_FILENO, buf, sizeof(buf));
printf("ret: %d, buf: %s", ret, buf);
ret = write(fd, buf, ret);
printf("ret:%d\n", ret);
if(ret < )
{
perror("write error");
}
ret = read(fd, buf, );
if(ret < )
{
perror("ret");
}
write(STDOUT_FILENO, buf, ret);
}
return ;
}
server端:
#include <stdio.h>
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
#include <strings.h>
#include <unistd.h>
#include <netinet/in.h>
#include <string.h>
#include <errno.h>
//server端监听端口
#define PORT 3388
int main()
{
int fd = socket(AF_INET, SOCK_STREAM, );//创建一个socket
int nfd;
struct sockaddr_in server_addr, client_addr;
bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family =AF_INET; //ipv4
server_addr.sin_port = htons(PORT);//端口
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);//监听本主机的所有ip bind(fd, (struct sockaddr *)&server_addr, sizeof(server_addr));//绑定
listen(fd, );//监听socket连接,30为三次握手队列大小
char buf[];
// 把server_addr.sin_addr的地址转换成字符串(点分十进制表示)
inet_ntop(AF_INET, &server_addr.sin_addr, buf, sizeof(buf));
printf("%s\n", buf);//一般输出为0.0.0.0
pid_t pid;
while()
{
bzero(buf, sizeof(buf));//buf清零,相当于memset(buf, 0, sizeof(buf)); socklen_t len= sizeof(client_addr);
nfd = accept(fd, (struct sockaddr*)&client_addr, &len);//接收socket连接
inet_ntop(AF_INET, &client_addr.sin_addr, buf, sizeof(buf));//获取socket连接客户端的ip
printf("accept connetc %s port %d\n", buf, ntohs(client_addr.sin_port)); pid = fork();
//子进程
if(pid == )
{
while()
{ int ret = read(nfd, buf, sizeof(buf));
if(ret <= )
{
perror("ret");
return ;
}
write(STDOUT_FILENO, buf, ret);
write(nfd, buf, ret);
}
}
}
return ;
}
linux socket连接中 ERRNO错误的更多相关文章
- Linux socket 编程中存在的五个隐患
前言: Socket API 是网络应用程序开发中实际应用的标准 API.尽管该 API 简单,但是 开发新手可能会经历一些常见的问题.本文识别一些最常见的隐患并向您显示如何避免它 ...
- 11.1、socket连接中的粘包、精确传输问题
粘包: 发生原因: 当调用send的时候,数据并不是即时发给客户端的.而是放到了系统的socket发送缓冲区里,等缓冲区满了.或者数据等待超时了,数据才会发送,所以有时候发送太快的话,前一份数据还没有 ...
- Socket 连接错误及原因
ECONNABORTED 该错误被描述为"software caused connection abort",即"软件引起的连接中止".原因在于当服务和客户 ...
- Linux Socket 编程简介
在 TCP/IP 协议中,"IP地址 + TCP或UDP端口号" 可以唯一标识网络通讯中的一个进程,"IP地址+端口号" 就称为 socket.本文以一个简单的 ...
- socket连接和http连接的区别
socket连接和http连接的区别 HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的 tcp协议: 对应于传输层 ip协议: 对应于网络层 TCP/IP ...
- Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web 服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠s ...
- linux网络编程中阻塞和非阻塞socket的区别
读操作 对于阻塞的socket,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返 回.当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数.当 ...
- Linux Xshell连接Linux服务器时报错Socket error Event: 32 Error: 10053
问题描述 在用Xshell连接Linux服务器时,出现错误提示"Socket error Event: 32 Error: 10053. Connection closing...Socke ...
- Linux系统中errno对应的中文意思 errno.h
/usr/include/asm/errno.h #define EPERM 1 /* Operation not permitted */操作不允许 #define ENOENT 2 /* No s ...
随机推荐
- JMS总结
一 什么是JMS 1.JMS,Java Message Service,Java消息服务是一种可以实现异步通讯的消息中间件MOM(Message Oriented Middleware,面向消息的中间 ...
- js中 ||的意思,js中 o = o || {};是什么意思呢?
o = o || {} 表示:如果o为null或undefined,则将o初始化空对象(即{}),否则o不变.目的是防止o为null或未定义的错误. 其中:||表示或操作,第一个条件为真,则结果为真而 ...
- php读取json时无数据(为空)的解决方法
在使用PHP调用一些json接口文件时 如果使用 file_get_contents 获取页面json数据后 再使用json_decode()解析后 数据无法正常输出 这是的返回值为null 这是由于 ...
- i5 6300HQ 和 i7 6700HQ
i7 6700HQ: 四核八线程 14nm 45W 2.6-3.5GHz 支持DDR4 2133内存 三级缓存6M HD Graphics 530集显 i5 6300HQ: 四核四线程 14nm 45 ...
- Maven修改本地仓库路径
仓库知识参考 http://www.cnblogs.com/luotaoyeah/p/3785044.html 1. 修改配置文件settings.xml 假设你的maven位置在 D:\apache ...
- JS——全选与反选
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 课堂笔记-background属性
一,background-position:(图片定位) 三种写法: 1):按%比,左上角最小(0%,0%),右下角最大(100%,%100): 2):(x,y)左上角最小(0,0),右下 ...
- 深入理解javascript--笔记
书写可维护的代码 1,最小全局变量 在js中不用声明变量就可以直接使用,因此注意不要没有声明就使用.(无意中创建的全局变量)比如使用任务链进行var声明.var a=b=12;正确写法为var ...
- POJ 3414 解题报告!
原题: Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13227 Accepted: 5550 Special Jud ...
- 第一章:UNIX基础知识
本章内容主要是为了学习UNIX的基本知识和一些最基本的系统函数. 学习的关键就是跟随者书本敲代码.本节遇到的第一个问题就死本书的apue.h这个文件:一开始没有注意这个文件,盲目的去百度,一番百度之后 ...