天天看点

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

首先要下载nc命令行工具;非win自带;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

下载地址;

https://eternallybored.org/misc/netcat/netcat-win32-1.12.zip

如下命令,-l -p ,是启动nc作为服务端监听某个端口;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

如下命令,是以nc作为客户端;发送一些字符,服务端没收到;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

重新启动一个cmd,nc作为服务端再运行,监听9003端口;这次好了;客户端发的都收到;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

如果telnet到9003;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

进入telnet窗口以后,随便输入些字符,nc服务端也显示;telnet这边不显示输入的字符;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

下面是一个tcp测试小工具;监听9007;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

nc作为客户端,如下图;发送一些字符到9007;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

此工具收到的情况如下;最后一个0A是回车;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

还有一个UDP的接收端测试工具;等有时间把这两个小工具上传;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

当前是win10;下面用CFree 5.0,做一个简单socket的客户端发送程序;发一串字符,看nc作为服务端能否收到;

新建一个简单窗口工程;

这是一个win32程序,没有窗口;启动以后先初始化套接字库,然后用socket对9007端口发送一个字符串,然后清理套接字退出;

#include <windows.h>
#include <Winsock2.h>

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	/* TODO: Place code here.*/
	WORD wVersionRequested;
  	WSADATA wsaData;
  	int err;
    
  	wVersionRequested = MAKEWORD( 1, 1 );
    
  	err = WSAStartup( wVersionRequested, &wsaData );
  	if ( err != 0 ) {
    	return 1;
  	}
    
  	if ( LOBYTE( wsaData.wVersion ) != 1 ||
                HIBYTE( wsaData.wVersion ) != 1 )    
  	{                                                                
    	WSACleanup( );
    	return 1;    
  	}
        
  	struct sockaddr_in    sco_addr;
  	int len = sizeof(SOCKADDR);
  	char buffer[100] = {"welcome to china !!!"};
  	sco_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
  	sco_addr.sin_family = AF_INET;
  	sco_addr.sin_port = htons(9007);
    SOCKET scoke_client = socket(AF_INET,SOCK_STREAM,0);
  	while (1)
  	{
    	connect(scoke_client,(SOCKADDR*)&sco_addr,len);
        send(scoke_client,buffer,100,0);
    	closesocket(scoke_client);
  	}
  	WSACleanup();
	return 0;
}
           

找到CFree的如下库文件;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

删去多余字符,如下,才能构建通过;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

如果不做此设置,对应的C语句是:#pragma comment(lib,"ws2_32.lib")

先启动nc作为服务器监听9007;

构建成功以后,运行程序;结果如下;

NC命令行作为服务端、客户端以及win32 套接字程序的简单连接测试

程序一闪而过,只测试一次;更多功能自己添加;

继续阅读