/创建write.txt文本。创建服务器端文件server.cpp,代码如下:
#include<winsock2.h>
#include<iostream>
#include<fstream.h>
#pragma comment(lib, "ws2_32.lib")
#define PORT 5000
#define MAXLISTEN 5
void main(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0)
{
return;
}
if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
{
WSACleanup();
return;
}
SOCKET sock;
sock = socket(AF_INET, SOCK_STREAM, 0);
if(sock == INVALID_SOCKET)
{
printf("socket fail !");
Sleep(3000);
return ;
}
struct sockaddr_in localaddr;
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(PORT);
localaddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
int nBind;
nBind = bind(sock, (struct sockaddr *)&localaddr, sizeof(struct sockaddr_in));
if(nBind == SOCKET_ERROR)
{
printf("bind fail !");
::Sleep(3000);
return ;
}
int nListen;
nListen = listen(sock, MAXLISTEN);
if(nListen == SOCKET_ERROR)
{
std::cout<<"listen fail !"<<std::endl;
::Sleep(3000);
return ;
}
while(true)
{
SOCKET newsocket;
struct sockaddr_in clientaddr;
int length;
length = sizeof(struct sockaddr_in);
newsocket = accept(sock, (struct sockaddr FAR *)&clientaddr, &length);
if(newsocket == INVALID_SOCKET)
{
printf("accept fail !");
::Sleep(3000);
int error = WSAGetLastError();
std::cout<<error<<std::endl;
::Sleep(3000);
break ;
}
//send file
ifstream ofile("write.txt");//读取write.txt里面的文本发送
const int nima= 1024*10;
char buffer[nima]; // = "this is the server !";
ofile.read(buffer,nima);
ofile.close();
int nSend;
nSend = send(newsocket, buffer, sizeof(buffer), 0);
if(nSend == SOCKET_ERROR)
{
printf("send fail !");
Sleep(3000);
break ;
}
//
closesocket(newsocket);
}
closesocket(sock);
WSACleanup();
}
-----------------------------------------------------------------------------------------------------------------------------
//创建客户端文件client.cpp,代码如下:
#include <winsock2.h>
#include <winbase.h>
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
#define PORT 5000
void main(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0)
{
return;
}
if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
{
WSACleanup();
return;
}
SOCKET sock;
sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.S_un.S_addr = inet_addr("192.168.0.31");
int nConnect;
nConnect = connect(sock, (struct sockaddr FAR*)&server, sizeof(struct sockaddr_in));
if(nConnect == SOCKET_ERROR)
{
int erro = WSAGetLastError();
printf("connect fail !");
Sleep(3000);
closesocket(sock);
WSACleanup();
return ;
}
char buffer[1024];
int nAmount;
nAmount = recv(sock, buffer, sizeof(buffer), 0);
if(nAmount == SOCKET_ERROR)
{
closesocket(sock);
WSACleanup();
return ;
}
std::cout<<buffer<<std::endl;
Sleep(3000);
closesocket(sock);
WSACleanup();
}