哪位高手能抽点时间帮忙说下具体的实现过程?
如:问:“具体怎样利用CSocket实现数据传输?”1、初始化Socket,代码如下:
if (!AfxSocketInit())
{
return FALSE;
}
2、创建Socket,代码如下:
......
......
最后、......
当然,附带源代码就更好了!!!(注:VC6.0; 两台机器,一台服务端,一台客户端,可互传数据; 在局域网内先获取IP地址后,再传数据。)非常感激~~~
如:问:“具体怎样利用CSocket实现数据传输?”1、初始化Socket,代码如下:
if (!AfxSocketInit())
{
return FALSE;
}
2、创建Socket,代码如下:
......
......
最后、......
当然,附带源代码就更好了!!!(注:VC6.0; 两台机器,一台服务端,一台客户端,可互传数据; 在局域网内先获取IP地址后,再传数据。)非常感激~~~
CSocket Serversocket;
2. 利用CSocket对象的Create()函数创建Windows Socket,Create()函数会调用Bind()函数将此Socket绑定到指定的地址上,其原型为:
BOOL Create (UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL);
其中nSocketPort参数指定通信连接的端口号,端口号可以任意指定,但最好不要使用系统默认的一些端口号,例如21是FTP文件传输使用的端口号;
3. Socket创建完毕之后,在服务器端进行监听客户的连接请求,使用如下的代码:
ServerSocket.Listen();
紧接着对于客户端而言,将会调用Connect()函数向服务器发送连接请求,而对于服务器而言,则会调用Accept()函数对客户端发送过来的请求连接进行接受和处理,Accept()函数可以创建一个和监听Socket相同的连接Socket来处理客户的请求,二原来的Socket仍然处于监听状态,使用的形式如下。
客户端:
ClientSocket.Connect(服务器的地址,服务器的端口号);
服务器端:
CSocket ReceiveSocket;
ServerSocket.Accept(连接Socket,客户的地址结构,客户地址结构的长度)
4. 对于数据流服务器类型而言,服务器和客户各自通过调用函数来完成数据的发送和接受,使用如下的语句:
ServerReceive.Receive(缓冲区,缓冲区的长度,接受标志位);
Client.Send(缓冲区,缓冲区的长度,发送标志位);
5. 在客户端与服务器端的数据传输完成之后,调用下述语句,释放Socket所占有的资源。
ServerSocket.Close();
ReceiveSocket.Close();
ClientSocket.Close();这是在书上看到的编程一般步骤,看看对你有用不?当然,程序最好是自己写了。
#include <winsock.h>
#include <windows.h>
#include <iostream.h>
#pragma comment (lib,"ws2_32.lib")
int main (int argc, char *argv[])
{
int iportFrom,iportTo;
int testsocket;
int iopenedport = 0;
struct sockaddr_in target_addr;
WSADATA wsaData;
WORD wVersionRequested=MAKEWORD(1,1);
if (argc <= 3)
{
cout << "使用格式 : " << argv[0] << " 主机IP地址 开始端口号 结束端口号\n" << endl;
exit(1);
}
if (atoi (argv[2]) > atoi (argv[3]))
{
cout << "端口号出现错误!" << endl;
exit(1);
}
else
{
if (WSAStartup (wVersionRequested , &wsaData) )
{
cout << "连接socket库失败\n" << endl;
exit(1);
}
iportFrom=atoi (argv[2]);
iportTo=atoi (argv[3]);
for (int i=iportFrom; i <= iportTo; i++)
{
cout << "Socket建立连接.." << endl;
if ((testsocket=socket (AF_INET,SOCK_STREAM,0) ) == INVALID_SOCKET)
{
cout << "Socket建立失败!" << endl;
exit(0);
}
target_addr.sin_family = AF_INET;
target_addr.sin_port = htons(i);
target_addr.sin_addr.s_addr = inet_addr (argv[1]);
cout << "正在扫描端口:" << i << endl;
if (connect (testsocket, (struct sockaddr *) &target_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
cout << "端口" << i << "关闭!" << endl;
else
{
iopenedport++;
cout << "端口" << i << "开放\n" << endl;
}
}
cout << "目标主机" << argv[1] << "从" << iportFrom << "--" << iportTo << "共有" << iopenedport << "个端口开放" << endl;
closesocket (testsocket);
WSACleanup();
}
return 0;
}