64,648
社区成员
发帖
与我相关
我的任务
分享
#include <winsock2.h>
#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
static UINT port=%%1;
UINT Listen(LPVOID pParam)
{
SOCKET sServer,sClient;
char buf[1024];
int retVal;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sServer)
{
WSACleanup();
return -1;//创建套接字失败
}
SOCKADDR_IN addrServ;
addrServ.sin_family=AF_INET;
addrServ.sin_port=htons((short)pParam);
addrServ.sin_addr.s_addr=INADDR_ANY;
retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//绑定套接字失败
}
retVal=listen(sServer,1);
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//开始监听失败
}
sockaddr_in addrClient;
int addrClientlen=sizeof(addrClient);
sClient=accept(sServer,(sockaddr FAR*)&addrClient,&addrClientlen);
if(INVALID_SOCKET==sClient)
{
closesocket(sServer);
WSACleanup();
return -1;//开始接受客户端连接失败
}
ZeroMemory(buf,sizeof(buf));
retVal=recv(sClient,buf,sizeof(buf),0);
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
closesocket(sClient);
WSACleanup();
return -1;//接收数据失败
}
//向客户端发送
strcpy(buf,"hello world!");
send(sClient,buf,sizeof(buf),0);
closesocket(sServer);
closesocket(sClient);
WSACleanup();
return 0;
}
2.简单客户端
#include <winsock2.h>
#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKET sHost;
SOCKADDR_IN servAddr;
char buf[1024];
int retVal;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sHost)
{
WSACleanup();
return -1;//创建套接字失败
}
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr(%%3);
servAddr.sin_port=htons((short)%%2);
int nServAddlen=sizeof(servAddr);
retVal=connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr));
if(SOCKET_ERROR==retVal) {
closesocket(sHost);
WSACleanup();
return -1;//连接服务器失败
}
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
retVal=send(sHost,buf,sizeof(buf),0);
if(SOCKET_ERROR==retVal)
{
closesocket(sHost);
WSACleanup();
return -1;//向服务器发送数据失败
}
//接收服务器端的信息
recv(sHost,buf,sizeof(buf),0);
printf("%s\n",buf);
closesocket(sHost);
WSACleanup();
// GetWebSiteContent.cpp : Defines the entry point for the console application.
//
/*
@title this code decription that using socket to get content from a http site
@date
*/
#include "stdafx.h"
#include <iostream>
#include <winsock.h>
#include <string>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
void main()
{
struct hostent *pURL;
struct sockaddr_in addr;
WSADATA WSAData={0};
SOCKET sockfd;
string header;
static char text[BUFSIZ];
WSAStartup(MAKEWORD(2,2), &WSAData);
sockfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
pURL = gethostbyname("www.baidu.com");
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = *((unsigned long*)pURL->h_addr);
addr.sin_port = htons(80);
connect(sockfd,(SOCKADDR *)&addr,sizeof(addr));
header="GET ";
header.append("/");
header.append(" HTTP/1.1\r\n");
header.append("HOST: ");
header.append("www.baidu.com");
header.append("\r\nConnection: Close\r\n\r\n");
send(sockfd, header.c_str(), strlen(header.c_str()), 0);
while (recv(sockfd, text, BUFSIZ, 0) != NULL)
{
cout<<text;
strnset(text, '\0', BUFSIZ);
}
closesocket(sockfd);
WSACleanup();
system("PAUSE");
}