客户端无法tcp连接上本地虚拟机的问题(最后是linux防火墙问题)

刚装好裸的centos6.5,很多东西跟以前比都是没有的,所以做起来会遇到很多问题。

今天刚把svn 无法ci的问题解决了,起完服后,发现客户端连不上。

 

1)端口转发,查看了一下虚拟机的端口转发,发现无问题,windows下的防火墙也都关闭了。

2)在非本地服(145上) ping,和telnet 都说能连上,说明网络层没问题,但是貌似telnet没响应。

3)在本服上tcpdump 对外端口,尝试连接 或telnet的时候 发现很长一段时间内都连续收到了tcp的包,但是内容都是相同的,

   是客户端地址->服务端地址:监听端口的 flag=S的包,表示是在一直尝试发送建立tcp链接第一次握手的请求

    正常建立连接应该是 S S .  然后发送数据时P . 断开连接是F . F .

   综合分析了一下  可能是linux设置了网络防火墙

4)service iptables status 发现果然如何,只对22端口开放了对外接受

解决:

修改/etc/sysconfig/iptables, 增加对监听端口的开放

然后重启 service iptables restart

接着就可以连接了。

 

 

 

===================

接着想到前些天用windows下的werl.exe jcl控制台去连接linux服务器的节点,无法连接直接terminated了,可能也是这个原因。

 

好像是4369端口但是开放了也不行,为了内网能稳定的做各种操作,所以干脆把iptables里面的REJECT都删了 然后发现 erl就能远程连了。

转载于:https://www.cnblogs.com/vanishfan/p/4711480.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的示例代码,可以在 Linux 上使用 TCP 连接客户端发送数据: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 8080 int main() { int sockfd, new_sockfd, valread; struct sockaddr_in serv_addr, cli_addr; char buffer[1024] = {0}; char *hello = "Hello from server"; int addrlen = sizeof(serv_addr); // 创建 socket if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); exit(EXIT_FAILURE); } // 设置地址重用 int opt = 1; if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { perror("setsockopt failed"); exit(EXIT_FAILURE); } // 设置服务器地址 serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(PORT); // 绑定 socket 到指定地址 if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } // 监听连接 if (listen(sockfd, 3) < 0) { perror("listen failed"); exit(EXIT_FAILURE); } // 等待客户端连接 if ((new_sockfd = accept(sockfd, (struct sockaddr *)&cli_addr, (socklen_t*)&addrlen)) < 0) { perror("accept failed"); exit(EXIT_FAILURE); } // 发送数据到客户端 send(new_sockfd, hello, strlen(hello), 0); printf("Hello message sent\n"); return 0; } ``` 这个代码会监听本地的 8080 端口,并等待客户端连接。一旦客户端连接上来,服务器就会发送一个 “Hello from server” 的消息到客户端

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值