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. 类和对象 nil/Nil/NULL的区别

    iOS-----类和对象,nil/Nil/NULL的区别   iOS中类和对象,nil/Nil/NULL的区别 类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性 ...

  2. Xcode6中如何去掉默认的Main.storyboard

    xcode 6取消了 Empty Application 模板来创建一个工程,创建出来的有工程多了Main.storyboard,默认加载Main.storyboard,但是有很多人还想用代码来实现U ...

  3. (转)C#实现MD5加密

    首先,先简单介绍一下MD5 MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和r ...

  4. 动态规划VS分治策略

    •在用分治法解决问题时,由于子问题的数目往往是问题规模的指数函数,因此对时间的消耗太大. •动态规划的思想在于,如果各个子问题不是独立的,不同的子问题的个数只是多项式量级,而我们能够保存已经解决的子问 ...

  5. 如何关闭emacs开启时自己打开的欢迎界面

    EMACS在开启后,会自动打开一个欢迎界面.如果要去除他,可以在用emacs或其实编辑工具编辑~/.emacs文件. 在最下面一行加上,保存退出即可. (setq inhibit-startup-me ...

  6. Reveal UI 分析工具简单使用

    官网下载地址(30天免费试用):http://revealapp.com/ 作用: 在 iOS 开发中,我们有时很希望有一款类似 Web 开发中的 UI Debug 工具(例如:Firebug),让我 ...

  7. java批量insert入mysql数据库

    mysql 批量insert语句为 insert into Table_(col1,col2...) values(val11,val12...),(val11,val12...),...; java ...

  8. codeforces 733D

    明白了自己这么菜的原因多半是赛后不肯去补那些需要多花点时间思考的题目以及效率不高,但愿现在还不算晚... #include<bits/stdc++.h> #include<iostr ...

  9. Async/Await - Best Practices in Asynchronous Programming

    https://msdn.microsoft.com/en-us/magazine/jj991977.aspx Figure 1 Summary of Asynchronous Programming ...

  10. 在as3中使用protobuf

    在最近参与开发的adobe air项目中,前后端的通信协议从XML.JSON再到protobuf,最后选择protobuf原因,主要是前后端维护protobuf协议就行了,同时还可以利用IDE做一些编 ...