天天看點

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 套接字程式的簡單連接配接測試

程式一閃而過,隻測試一次;更多功能自己添加;

繼續閱讀