#pragma comment( lib, "ws2_32.lib" )
#include <windows.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <stdio.h>
#include <winuser.h>
DWORD WINAPI hrcv(LPVOID);
DWORD WINAPI hsnd(LPVOID);
SOCKET sock,new_fd;
SOCKET sock2,new_fd2;
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
struct sockaddr_in server,server2;
DWORD threadid;
WSADATA ws;
struct hostent * iipp;
WSAStartup( MAKEWORD(2, 2),&ws);
if ((iipp=gethostbyname("xxxxxx.9966.org"))==0)return 0;//////////////////
sock = socket(AF_INET, SOCK_STREAM,0);
server.sin_family = AF_INET;
server.sin_port = htons(3389);
server.sin_addr.s_addr = inet_addr ("127.0.0.1");
if ((connect(sock, (struct sockaddr *)&server, sizeof(server)))==SOCKET_ERROR)
{ int fff=WSAGetLastError();
char buffer[50];
_gcvt(fff, 20, buffer );
// MessageBox(0,buffer,"aa",0);
}
sock2 = socket(AF_INET, SOCK_STREAM,0);
server2.sin_family = AF_INET;
server2.sin_port = htons(9900);
server2.sin_addr= *((struct in_addr *)iipp->h_addr);
if ((connect(sock2, (struct sockaddr *)&server2, sizeof(server2)))==SOCKET_ERROR)
{ int fff=WSAGetLastError();
char buffer[50];
_gcvt(fff, 20, buffer );
// MessageBox(0,buffer,"bind错误码",0);
}
CreateThread(0,0,hrcv,0,0,&threadid);
CreateThread(0,0,hsnd,0,0,&threadid);
//////////////////////////////////////////////////////////////////////////////////////以下是服务端
#pragma comment( lib, "ws2_32.lib" )
#include <windows.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <stdio.h>
#include <winuser.h>
DWORD WINAPI hrcv(LPVOID);
DWORD WINAPI hsnd(LPVOID);
SOCKET sock,new_fd;
SOCKET sock2,new_fd2;
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
struct sockaddr_in server,server2;
DWORD threadid;
WSADATA ws;
WSAStartup( MAKEWORD(2, 2),&ws);
sock = socket(AF_INET, SOCK_STREAM,0);
server.sin_family = AF_INET;
server.sin_port = htons(33896);
server.sin_addr.s_addr = inet_addr ("0.0.0.0");
if ((bind(sock, (struct sockaddr *)&server, sizeof(server)))==SOCKET_ERROR)
{ int fff=WSAGetLastError();
char buffer[50];
_gcvt(fff, 20, buffer );
MessageBox(0,buffer,"bind错误码",0);
}
listen(sock,10);
sock2 = socket(AF_INET, SOCK_STREAM,0);
server2.sin_family = AF_INET;
server2.sin_port = htons(9900);
server2.sin_addr.s_addr = inet_addr ("0.0.0.0");
if ((bind(sock2, (struct sockaddr *)&server2, sizeof(server2)))==SOCKET_ERROR)
{ int fff=WSAGetLastError();
char buffer[50];
_gcvt(fff, 20, buffer );
MessageBox(0,buffer,"bind错误码",0);
}
listen(sock2,10);
new_fd = accept(sock,0,0);
new_fd2 = accept(sock2,0,0);
CreateThread(0,0,hrcv,0,0,&threadid);
CreateThread(0,0,hsnd,0,0,&threadid);
while(1)
{
Sleep(1000);
};
};
DWORD WINAPI hrcv(LPVOID lp)
{
int iResult;
char strBuffersss[1024];
while(1)
{
iResult = recv(new_fd,strBuffersss,sizeof(strBuffersss),0);
if(iResult<=0)ExitProcess(0);
send(new_fd2,strBuffersss,iResult,0);
};
};
DWORD WINAPI hsnd(LPVOID lp)
{
int iResult;
char strBuffersss[1024];
while(1)
{
iResult = recv(new_fd2,strBuffersss,sizeof(strBuffersss),0);
if(iResult<=0)ExitProcess(0);
send(new_fd,strBuffersss,iResult,0);
};
};
来源:CSDN
作者:pjdsydzxw
链接:https://blog.csdn.net/pjdsydzxw/article/details/104050224