`
zhangyafei_kimi
  • 浏览: 265540 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Linux和WIndows都不支持自连接

阅读更多
Cygwin下结果:
connect() 127
Transport endpoint is already connected

VC8下结果:
connect() 10022
No error

Linux 2.6.27下结果:
connect() 106
Transport endpoint is already connected



/*
作者:张亚霏
2008-12-09早
*/



#if defined WIN32 || defined _WIN32


#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")

int init_net()
{
	WSADATA wsa_data;
	return 0 != WSAStartup(MAKEWORD(2,2), &wsa_data);
}

void uninit_net()
{
	WSACleanup();
}

int close_socket(SOCKET s)
{
	return closesocket(s);
}

int get_last_error()
{
	return WSAGetLastError();
}
#else

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>
#include <errno.h>

int init_net()
{
	return 1;
}

void uninit_net()
{
}


typedef int SOCKET;

int close_socket(SOCKET s)
{
	return close(s);
}

int get_last_error()
{
	return errno;
}
#endif



#define BUFFER_SIZE 1024
#define DEST_ADDRESS "127.0.0.1"
#define DEST_PORT 27015//1037


int main()
{
	int recv_buf_size = 1024;
	SOCKET send_socket;
	struct sockaddr_in recv_addr;
	char send_buf[BUFFER_SIZE];
	char recv_buf[BUFFER_SIZE];
	int ret;

	fd_set read_set;
	struct timeval time_out;

	init_net();

	send_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	
	recv_addr.sin_family = AF_INET;
	recv_addr.sin_port = htons(DEST_PORT);
	recv_addr.sin_addr.s_addr = inet_addr(DEST_ADDRESS);
	
	ret = bind(send_socket, (struct sockaddr*) &recv_addr, sizeof(recv_addr));
	if(ret == -1)
	{
		printf("bind() %d\n", get_last_error());
		perror(NULL);
	}
	
	ret = listen(send_socket, 5);
	if(ret == -1)
	{
		printf("listen() %d\n", get_last_error());
		perror(NULL);
	}
	

	recv_addr.sin_family = AF_INET;
	recv_addr.sin_port = htons(DEST_PORT);
	recv_addr.sin_addr.s_addr = inet_addr(DEST_ADDRESS);
	
	ret = connect(send_socket, (struct sockaddr*) &recv_addr, sizeof(recv_addr));
	if(ret == -1)
	{
		printf("connect() %d\n", get_last_error());
		perror(NULL);
	}

	close_socket(send_socket);
	uninit_net();
	return 0;
}
分享到:
评论

相关推荐

    Linux下远程连接windows3389端口

    在IT行业中,Linux和Windows是两种广泛使用的操作系统。尽管它们有着不同的系统内核和界面,但有时我们需要在Linux环境中访问Windows系统的资源,特别是在需要管理Windows服务器或者进行跨平台协作时。"Linux下远程...

    flashfxp支持连接windows、linux服务器

    "支持连接Windows、Linux服务器"这一特性意味着FlashFXP不仅能够与运行Windows操作系统的服务器建立连接,还能够无缝对接到基于Linux内核的服务器系统。 在Windows环境中,FlashFXP通过标准的FTP、FTPS(FTP over ...

    Linux远程连接Windows桌面

    在IT领域,跨平台的远程桌面连接是一种常见需求,特别是在Linux和Windows系统并存的环境中。本主题将详细探讨如何使用Linux系统进行远程连接到Windows桌面。标题中的"Linux远程连接Windows桌面"指的是利用特定的工具...

    windows远程连接linux工具

    本文将详细介绍两种常用的Windows远程连接Linux工具:PuTTY和WinSCP。 PuTTY是一款免费且开源的SSH(Secure Shell)客户端,它支持多种网络协议,包括SSH、Telnet和Rlogin。以下是如何使用PuTTY进行远程连接的步骤...

    Linux和windows通讯

    7. **SSL/TLS加密**:如果需要安全通讯,可以使用OpenSSL库,它在Linux和Windows上都有支持,提供SSL/TLS加密。 通过以上要点,开发者可以构建起Linux和Windows之间的安全、可靠的网络通信系统。无论是C还是C++,...

    windows与Linux连接工具

    虽然这与我们的主题——Windows与Linux连接工具—不太相关,但如果你在工作之余需要放松一下,可以访问该网站寻找娱乐。 总的来说,WinSCP作为Windows与Linux之间的桥梁,提供了安全、直观的文件管理体验。配合正确...

    VNC远程工具 支持linux和windows

    它们都能连接到任何运行VNC服务器的设备,无论该设备是Linux还是Windows。 5. **安全考虑**: - 使用强密码保护VNC服务器,避免使用默认密码。 - 考虑使用SSL/TLS加密连接,提高数据传输的安全性。 - 在公共网络...

    Windows连接linux的图形界面工具

    总的来说,VNC Viewer是Windows连接Linux图形界面的重要工具,通过它,用户可以在本地Windows环境下高效地管理和操作远程Linux系统,极大地提高了跨平台工作的便利性。不过,需要注意的是,虽然VNC提供了便捷的远程...

    xshell(windows远程连接Linux)

    xshell(windows远程连接Linux)xshell(windows远程连接Linux)xshell(windows远程连接Linux)xshell(windows远程连接Linux)

    史上最佳体验的windows和linux远程连接工具,比Xshell更好用的 FinalShell

    1.多平台支持Windows,Mac OS X,Linux 2.多标签,批量服务器管理. 3.支持登录Ssh和Windows远程桌面. 4.漂亮的平滑字体显示,内置100多个配色方案. 5.shell,sftp同屏显示,同步切换目录. 6.命令自动提示,智能匹配,输入更...

    windows 连接linux的工具SecureCRT

    SecureCRT是一款强大的Windows平台下远程访问工具,专用于连接Linux和其他UNIX系统,它以其丰富的功能和高度可定制性,成为了IT专业人士在Windows环境下操作Linux服务器的首选工具。相较于Putty,SecureCRT提供了更...

    Tomcat 服务器windows和linux 版本

    对于跨平台支持,Tomcat在Windows和Linux上表现一致,这是因为其基于Java的特性,使得它可以在任何安装了Java运行环境(JRE)的操作系统上运行。不过,需要注意的是,Windows和Linux在文件路径、权限控制、环境变量...

    详细解析Windows usb驱动与Linux usb驱动的相似和差异

    无论是Windows还是Linux操作系统,其下的USB驱动都需要遵循统一的USB协议来进行设备识别和数据传输。 ##### 1.1 USB协议特点 - **通用性**:支持多种类型的设备,如键盘、鼠标、存储设备等。 - **热插拔**:支持...

    连接你的Linux和Windows.pdf

    《连接你的Linux和Windows》这份资源主要探讨了不同操作系统之间的网络互连,特别是Linux和Windows的互联互通技术。网络互连是信息技术发展的重要驱动力,它不仅涵盖了大型网络间的交互,如固定电话网、移动电话网、...

    Windows连接Linux工具Putty

    总之,PuTTY作为一款轻量级且强大的远程连接工具,极大地便利了Windows用户对Linux服务器的管理和操作,无论是初学者还是专业人士,都能从中受益。通过熟悉其基本操作和高级功能,用户可以更加高效地进行远程工作。

    基于PPP协议的Linux与Windows CE网络

    总的来说,通过PPP协议,Linux和Windows CE之间的网络连接提供了一种经济高效的方式,使不同平台的设备能够共享数据和资源,扩展了它们的功能和协作能力。这对于那些需要在不同系统间进行数据交换的场景,如嵌入式...

    linux与windows文件传输工具 flashfxp

    本文将详细介绍FlashFXP的功能、使用方法以及如何在Linux和Windows之间进行文件传输。 FlashFXP提供了直观的用户界面,使得文件传输操作对新手也十分友好。它的主要特点包括: 1. **多平台支持**:FlashFXP不仅...

    linux服务器端和windows客户端cvs.rar

    - 在Windows客户端,使用`cvsnt-2.5.03.2151安装包.msi`安装CVSNT,这是一个增强版的CVS客户端,支持更多的功能和特性。 - 阅读`注意事项.txt`文件,了解可能遇到的问题和解决方案。 - 对于安全性,考虑使用SSL/TLS...

    Linux下安装FreeRDP连接Windows远程桌面的好软件软件.pdf

    Linux下安装FreeRDP连接Windows远程桌面的好软件软件 在Linux系统中,连接Windows远程桌面一直是一个难题,特别是在Linux系统中没有类似微软远程桌面的东西。VNC是一个选择,但是VNC却不能连接Windows的远程桌面。...

    13-Windows连接linux的工具

    总的来说,PuTTY是Windows用户连接Linux服务器的重要工具,它提供了安全、便捷的远程访问方式,是IT管理员和开发者日常工作中不可或缺的助手。无论你是初次接触还是资深用户,理解并熟练掌握PuTTY的各项功能将极大地...

Global site tag (gtag.js) - Google Analytics