- 论坛徽章:
- 0
|
这个程序是我去年写的了,因为以前的公布这两段代码的blog都已经停止使用了,所以重新把它整理到我这个blog中。这些代码都是我初学socket编程的时候练手用的,因为当时的水平很有限,代码虽然实现了简单的转发功能,但是许多地方还欠妥当,并且也不高明。希望朋友们更多的是提出修改的建议,或者能发出更好的代码。感激不尽!
程序的作用是将所有发到本地监听端口的数据发送到指定远程地址指定端口
也就是一个tcp端口转发程序
这个程序中pm.cpp是主线程包括了main函数
而ResendTread.cpp是最核心的部分
用来处理一个转发任务
测试该程序,可以找两个点对点通信的程序进行通信其信息经过转发程序pm转发
望有经验的高手可以给建议。
邮箱
realphenix@126.com
***************************************************************************
/*--- pm.h ---*/
#include
#include
#include
#include "fun.h"//Declare all function
#include "ResendThread.h"//Declare the thread function use for resend
***************************************************************************
/*--- pm.cpp ---*/
#include "pm.h"//Declare all function
//The important global variable
EPARAM ExternalParameter;
SOCKET sPARAM;
int main(int argc, char* argv[])
{
//Check the parameters
if( (ExternalParameter = CheckParameter(argc,argv)).error == 1 )
{
//If the number of parameters are incorrect, get out!
return 0;
}
//Initialize the winsock use WSA()
if( WSA())
{
//When the WSA() failed to initialize the winsock, get out!
return 0;
}
//Create the listening socket
SOCKET sock_l = SOCKET_ERROR;
sock_l = socket(AF_INET, SOCK_STREAM, 0); //tcp listen socket
sockaddr_in addr_l;//Local address for listen
addr_l.sin_addr.s_addr = INADDR_ANY;
addr_l.sin_family = AF_INET;
addr_l.sin_port = htons(ExternalParameter.localport);
//Bind the sock_l to local address and set it to listening mode
if ( SOCKET_ERROR == bind(sock_l, (sockaddr *)&addr_l, sizeof(addr_l)) )
{
std::cout
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/34431/showart_265963.html |
|