我创建一个DLL,当第一次调用这个DLL时,首先调用函数connect (代码如下),这函数是一个创建连接server端的函数,返回一个socket值,当调用完这个DLL后,如何让这个函数里面的值不会被释放,而是保存在内存中.这样,当第二次..第二次调用这个DLL函数后,只要值得函数返回的socket值就可了,这样就没必要每都去连接server后在发送,接收,就高人指点SOCKET s;
WORD wVersionRequested;
WSADATA wsa;
wVersionRequested = MAKEWORD( 2, 2 );
int res = WSAStartup(wVersionRequested,&wsa);
if(res == -1)
{
return_char="1001";
return s;
}
struct sockaddr_in socket_in;
s = WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,0);
if(s == INVALID_SOCKET)
{
return_char="1002";
return s;
}
socket_in.sin_family = AF_INET;
socket_in.sin_port = htons(8080);
socket_in.sin_addr.S_un.S_addr = inet_addr(cs_serip);int con_res = connect(s,(struct sockaddr*)&socket_in,sizeof(socket_in));
if(con_res == SOCKET_ERROR)
{
//失败
return_char="1002";
closesocket(s);
WSACleanup();
return s;
}
else
{
return_char="0000";
return s;}
WORD wVersionRequested;
WSADATA wsa;
wVersionRequested = MAKEWORD( 2, 2 );
int res = WSAStartup(wVersionRequested,&wsa);
if(res == -1)
{
return_char="1001";
return s;
}
struct sockaddr_in socket_in;
s = WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,0);
if(s == INVALID_SOCKET)
{
return_char="1002";
return s;
}
socket_in.sin_family = AF_INET;
socket_in.sin_port = htons(8080);
socket_in.sin_addr.S_un.S_addr = inet_addr(cs_serip);int con_res = connect(s,(struct sockaddr*)&socket_in,sizeof(socket_in));
if(con_res == SOCKET_ERROR)
{
//失败
return_char="1002";
closesocket(s);
WSACleanup();
return s;
}
else
{
return_char="0000";
return s;}
解决方案 »
- [提问]JavaScript如何获取HTML页面Panel控件的句柄?
- 发展方向问题!请高手指点!
- 求《Windows WDM设备驱动程序开发指南》配书源码
- 请问在ListBox中可以添加Button吗?
- 在程序中如何实现PowerPoint中画面切换的效果?
- 在VC++中执行Dos下的命令如Format
- 析构CDatabase对象时程序被挂起
- 急救!我的机器受到,不明程序的袭击,请指点
- WINDOWS下如何实现调色板的数据交换?(谢谢!!)
- 在一个类里 都有类似这样一行代码:DECLARE_DYNCREATE(CEditorView) 是什么意思?不好意思问题很菜 出错了不得不再问一次顺便加点分
- 解释性语言(脚本语言,标识性语言)可以很多,而且程序员可以自定义语言格式和自己写解析器。但编译性语言过多就是软件的祸患!
- 在编辑框输入很多数据 怎么在后台分别获取
如果这个是全局变量(或class/struct),那么在显示释放前,他本身就没有释放;
只要你不覆盖/修改掉它,就可以直接重用。
在你的函数中
if (g_s == INVALID_SOCKET)
{
你原来的过程
}
return_char="0000";
return g_s;