在windows操作系统中进行socket编程,服务器和客户端要各司其职,简单来说,
服务器端需要做的工作有:
1.创建套接字(socket函数)
2.锁定IP地址和端口(bind函数)
3.监听进入的链接(listen函数)
4.接受连接(accept函数)
5.收发数据(send/recv函数)
6.关闭连接(closesocket函数)
客户端需要的做的工作有:
1.创建套接字(socket函数)
2.连接到服务器端(connect函数)
3.收发数据(send/recv函数)
4.关闭连接(closesocket函数)
以下是一个简单的例子,代码是从网上找来的。但是感觉有些地方写的不够好,就稍微修改了一些地方,也勉强算原创吧。代码如下:
//Server.cpp
#include
#include
using namespace std;
#pragma comment(lib,"ws2_32.lib")
#define PORT 4000
//#define IP_ADDRESS "127.0.0.1"
DWORD WINAPI ClientThread(LPVOID lpParameter)
{
SOCKET CientSocket = (SOCKET)lpParameter;
int Ret = 0;
char RecvBuffer[MAX_PATH];
while ( true )
{
memset(RecvBuffer, 0x00, sizeof(RecvBuffer));
Ret = recv(CientSocket, RecvBuffer, MAX_PATH, 0);
if ( Ret == 0 || Ret == SOCKET_ERROR )
{
cout<<"客户端退出!"<
#include
using namespace std;
#pragma comment(lib,"ws2_32.lib")
#define PORT 4000
//#define IP_ADDRESS "127.0.0.1"
int main(int argc, char* argv[])
{
WSADATA Ws;
SOCKET CientSocket;
struct sockaddr_in ServerAddr;
int Ret = 0;
int AddrLen = 0;
HANDLE hThread = NULL;
char SendBuffer[MAX_PATH];
// quick argument check
if(argc != 2)
{
fprintf(stderr, "usage: %s
ExitProcess(1);
}
//Init Windows Socket
if ( WSAStartup(MAKEWORD(2,2), &Ws) != 0 )
{
cout<<"Init Windows Socket Failed::"<
ExitProcess(1);
}
假设客户端的可执行程序为clientSocket.exe,那么运行的时候应该遵循这样的格式:
clientSocket IP
这里的IP指的是服务器端的IP地址。
我使用VC6.0编译器编译了源代码,放在附件里面了。欢迎大家下载。
参考资料:http://www.cppblog.com/bujiwu/archive/2009/01/11/71707.aspx0daybank
文章评论