客户端:
#include <Winsock2.h>
#include <stdio.h>
void main()
{
WORD wVersionRequested;//第一步加载套接字库
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );//1.1版本的WINsock库
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return;
} SOCKET sockeLan=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSru;
addrSru.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSru.sin_family=AF_INET;
addrSru.sin_port=htons(6000); connect(sockeLan,(SOCKADDR*)&addrSru,sizeof(SOCKADDR)); char recvBuf[100];
recv(sockeLan,recvBuf,100,0);
printf("%s\n",recvBuf); send(sockeLan,"this is",strlen("this is")+1,0);
closesocket(sockeLan);
WSACleanup();
}服务器端:
#include <Winsock2.h>
#include <stdio.h>
void main()
{
WORD wVersionRequested;//第一步加载套接字库
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );//1.1版本的WINsock库
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return;
}
SOCKET socksur=socket(AF_INET,SOCK_STREAM,0);//定义一个SOCKET的变量,接收套接字字符
SOCKADDR_IN addsur;//一个地址结构体变量
addsur.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addsur.sin_family=AF_INET;
addsur.sin_port=htons(6000); bind(socksur,(SOCKADDR *)&addsur,sizeof(SOCKADDR));//绑定套接字 listen(socksur,5); SOCKADDR_IN addrClient;//存放客户端的地址值
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockCoon=accept(socksur,(SOCKADDR *)&addrClient,&len);//处于监听中的套接字客户端的链接请求,同意了链接请求,
//建立连接,同时返回一个相对这个链接的套接字
char sendbuf[100];
sprintf(sendbuf,"this %s is to zhangsan",inet_ntoa(addrClient.sin_addr));
send(sockCoon,sendbuf,strlen(sendbuf)+1,0);
char recvbuf[100];
recv(sockCoon,recvbuf,100,0);//长度是100,标记是0
printf("%s\n",recvbuf);
closesocket(sockCoon);//关闭套接字符,释放为套接字非配的资源 }
}
麻烦讲一下,尽量的说的清楚一下啊!谢谢了
#include <Winsock2.h>
#include <stdio.h>
void main()
{
WORD wVersionRequested;//第一步加载套接字库
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );//1.1版本的WINsock库
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return;
} SOCKET sockeLan=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSru;
addrSru.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSru.sin_family=AF_INET;
addrSru.sin_port=htons(6000); connect(sockeLan,(SOCKADDR*)&addrSru,sizeof(SOCKADDR)); char recvBuf[100];
recv(sockeLan,recvBuf,100,0);
printf("%s\n",recvBuf); send(sockeLan,"this is",strlen("this is")+1,0);
closesocket(sockeLan);
WSACleanup();
}服务器端:
#include <Winsock2.h>
#include <stdio.h>
void main()
{
WORD wVersionRequested;//第一步加载套接字库
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );//1.1版本的WINsock库
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return;
}
SOCKET socksur=socket(AF_INET,SOCK_STREAM,0);//定义一个SOCKET的变量,接收套接字字符
SOCKADDR_IN addsur;//一个地址结构体变量
addsur.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addsur.sin_family=AF_INET;
addsur.sin_port=htons(6000); bind(socksur,(SOCKADDR *)&addsur,sizeof(SOCKADDR));//绑定套接字 listen(socksur,5); SOCKADDR_IN addrClient;//存放客户端的地址值
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockCoon=accept(socksur,(SOCKADDR *)&addrClient,&len);//处于监听中的套接字客户端的链接请求,同意了链接请求,
//建立连接,同时返回一个相对这个链接的套接字
char sendbuf[100];
sprintf(sendbuf,"this %s is to zhangsan",inet_ntoa(addrClient.sin_addr));
send(sockCoon,sendbuf,strlen(sendbuf)+1,0);
char recvbuf[100];
recv(sockCoon,recvbuf,100,0);//长度是100,标记是0
printf("%s\n",recvbuf);
closesocket(sockCoon);//关闭套接字符,释放为套接字非配的资源 }
}
麻烦讲一下,尽量的说的清楚一下啊!谢谢了
HIBYTE( wsaData.wVersion ) != 2 )
{
WSACleanup( );
return;
}又拿这个来检测是否成功加载了2.2版本,否则就退出。那必须是退出了