服务器代码:
#pragma comment(lib,"Ws2_32")//包含相应库文件
// socket.cpp : 定义控制台应用程序的入口点。
//
//
#include "stdafx.h"
#include<Winsock2.h>
void _tmain(int argc, _TCHAR* argv[])
{
//加载socket动态链接库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
SOCKET svr=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN svr_addr_in;//创建一个服务器地址结构体,用于保存服务器的信息
svr_addr_in.sin_family=AF_INET;//协议家族
svr_addr_in.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//获取当前机子网卡ip地址
svr_addr_in.sin_port=htons(6000);//设置端口地址
bind(svr,(sockaddr*)&svr_addr_in,sizeof(SOCKADDR_IN));//将socket绑定到本地机地址上面
//把服务器socket设置为监听socket,同时能监听5个client客服
listen(svr,5);
SOCKADDR_IN client_addr_in;//用于保存客户端的信息
int len=sizeof(SOCKADDR_IN);
SOCKET client=accept(svr,(sockaddr*)&client_addr_in,&len);//等待(接受)客户端请求到来
char b[1024]="ss";
send(client,b,sizeof(b),0);//向服务器发送数据
closesocket(client);//关闭客户端套接字
closesocket(svr);//关闭服务器套接字
WSACleanup();//卸载socket链接库
#include<Winsock2.h>
void _tmain(int argc, _TCHAR* argv[])
{
//加载socket动态链接库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
SOCKET svr=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN svr_addr_in;//创建一个服务器地址结构体,用于保存服务器的信息
svr_addr_in.sin_family=AF_INET;//协议家族
svr_addr_in.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//获取当前机子网卡ip地址
svr_addr_in.sin_port=htons(6000);//设置端口地址
bind(svr,(sockaddr*)&svr_addr_in,sizeof(SOCKADDR_IN));//将socket绑定到本地机地址上面
//把服务器socket设置为监听socket,同时能监听5个client客服
listen(svr,5);
SOCKADDR_IN client_addr_in;//用于保存客户端的信息
int len=sizeof(SOCKADDR_IN);
SOCKET client=accept(svr,(sockaddr*)&client_addr_in,&len);//等待(接受)客户端请求到来
char b[1024]="ss";
send(client,b,sizeof(b),0);//向服务器发送数据
closesocket(client);//关闭客户端套接字
closesocket(svr);//关闭服务器套接字
WSACleanup();//卸载socket链接库
return ;
}
}
客户端代码:
// socketclient.cpp : 定义控制台应用程序的入口点。
//
//
#pragma comment(lib,"Ws2_32")//包含相应库文件
#include "stdafx.h"
#include<Winsock2.h>
void _tmain(int argc, _TCHAR* argv[])
{
//加载socket动态链接库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
//创建客户端套接字
SOCKET client=socket(AF_INET,SOCK_STREAM,0);//流式套接字。(数据报套接字,原套接字)
SOCKADDR_IN svr_addr_in;//保存服务器端的地址信息
svr_addr_in.sin_family=AF_INET;//代表TCP/IP协议族
//inet_addr()把字符串变成无符号的长整型。获取服务器地址127.0.0.1:本机做服务器,127.0.0.1是服务器的ip地址
svr_addr_in.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
//htons本函数将一个16位数从主机字节顺序转换成网络字节顺序,该端口号要与服务器的端口号相同
svr_addr_in.sin_port=htons(6000);
while(connect(client,(sockaddr*)&svr_addr_in,sizeof(svr_addr_in))!=0);//链接服务器,等于0表示连上服务器
char b[1024];
recv(client,b,sizeof(b),0);//客户端接受文件
printf("%s",b);
closesocket(client);//关闭客户端套接字
WSACleanup();//卸载winsock动态链接库
}
#include<Winsock2.h>
void _tmain(int argc, _TCHAR* argv[])
{
//加载socket动态链接库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
//创建客户端套接字
SOCKET client=socket(AF_INET,SOCK_STREAM,0);//流式套接字。(数据报套接字,原套接字)
SOCKADDR_IN svr_addr_in;//保存服务器端的地址信息
svr_addr_in.sin_family=AF_INET;//代表TCP/IP协议族
//inet_addr()把字符串变成无符号的长整型。获取服务器地址127.0.0.1:本机做服务器,127.0.0.1是服务器的ip地址
svr_addr_in.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
//htons本函数将一个16位数从主机字节顺序转换成网络字节顺序,该端口号要与服务器的端口号相同
svr_addr_in.sin_port=htons(6000);
while(connect(client,(sockaddr*)&svr_addr_in,sizeof(svr_addr_in))!=0);//链接服务器,等于0表示连上服务器
char b[1024];
recv(client,b,sizeof(b),0);//客户端接受文件
printf("%s",b);
closesocket(client);//关闭客户端套接字
WSACleanup();//卸载winsock动态链接库
}