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错误的更多相关文章

  1. Linux socket 编程中存在的五个隐患

    前言:         Socket API 是网络应用程序开发中实际应用的标准 API.尽管该 API 简单,但是   开发新手可能会经历一些常见的问题.本文识别一些最常见的隐患并向您显示如何避免它 ...

  2. 11.1、socket连接中的粘包、精确传输问题

    粘包: 发生原因: 当调用send的时候,数据并不是即时发给客户端的.而是放到了系统的socket发送缓冲区里,等缓冲区满了.或者数据等待超时了,数据才会发送,所以有时候发送太快的话,前一份数据还没有 ...

  3. Socket 连接错误及原因

    ECONNABORTED   该错误被描述为"software caused connection abort",即"软件引起的连接中止".原因在于当服务和客户 ...

  4. Linux Socket 编程简介

    在 TCP/IP 协议中,"IP地址 + TCP或UDP端口号" 可以唯一标识网络通讯中的一个进程,"IP地址+端口号" 就称为 socket.本文以一个简单的 ...

  5. socket连接和http连接的区别

    socket连接和http连接的区别 HTTP协议:简单对象访问协议,对应于应用层  ,HTTP协议是基于TCP连接的 tcp协议:    对应于传输层 ip协议:     对应于网络层 TCP/IP ...

  6. Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)

    我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web 服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠s ...

  7. linux网络编程中阻塞和非阻塞socket的区别

    读操作 对于阻塞的socket,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返 回.当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数.当 ...

  8. Linux Xshell连接Linux服务器时报错Socket error Event: 32 Error: 10053

    问题描述 在用Xshell连接Linux服务器时,出现错误提示"Socket error Event: 32 Error: 10053. Connection closing...Socke ...

  9. Linux系统中errno对应的中文意思 errno.h

    /usr/include/asm/errno.h #define EPERM 1 /* Operation not permitted */操作不允许 #define ENOENT 2 /* No s ...

随机推荐

  1. Less 语法特性

                                     ——(原创翻译:译者添加部分解释和代码运行结果) ♥在线Less编译器:LESS2CSS <一>综述 Less作为CSS的 ...

  2. robotframework接口测试初探1

    robotframework这个框架最近很多人在使用它,大部分是和selenium结合的,大概看了下,然后发现这个做接口测试感觉也还不错,初步研究了下 环境安装: robotframework这个环境 ...

  3. C++ 箴言

    1.把C++当成一门新的语言学习: 2.看<Thinking In C++>,不要看<C++变成死相>: 3.看<The C++ Programming Language ...

  4. yii accessRules用法

    访问控制过滤器(Access Control Filter)访问控制过滤器是检查当前用户是否能执行访问的controller action的初步授权模式. 这种授权模式基于用户名,客户IP地址和访问类 ...

  5. MVC API 权限控制

    定义一个类:TestAuthorizeAttribute public class TestAuthorizeAttribute : AuthorizeAttribute { public strin ...

  6. sql 语句 事务

    begin transactionbegin    insert into BlogUsers(BlogName) values ('测试');        insert into Posts(Po ...

  7. eclipse 配置c++

    安装mingw一直安装不成功 用TDM-GCC方便多了 附链接http://tdm-gcc.tdragon.net/

  8. jquery 无缝滚动 jquery.kxbdmarquee

    DEMO http://code.ciaoca.com/jquery/kxbdmarquee/demo/ 官网 http://code.ciaoca.com/jquery/kxbdmarquee/ D ...

  9. akka优势

    1.提供可扩展的实时事务处理. 2.为以下目标设计: 垂直扩展(并发) 水平扩展(远程调用) 高容错 3.Akka的核心,Akka-actor非常小的,可以非常方便地放进你的应用中,提供你需要的异步无 ...

  10. MySQL5.7.11安装

    1.官网下载mysql-5.7.11-winx64.zip 2.将压缩包解压至D:\Program Files,配置环境变量