socket 套接字TCP MAKEWORD( 1, 1 ),MAKEWORD( 2, 2 ) 两个版本的

服务器端:
// socketTCPServer.cpp.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <stdio.h>
#include <Winsock2.h> //windows socket的头文件

#pragma comment( lib, "ws2_32.lib" )// 链接Winsock2.h的静态库文件

class socketTcp
{
public:
	socketTcp();
	~socketTcp();

	bool sendMessage(char * sendBuffer);
	bool recvMessage(char recvBuffer[50]);

private:
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;
	SOCKET sockSrv;
	SOCKADDR_IN addrSrv;
	SOCKADDR_IN addrClient;
	int len;
	SOCKET sockConn;
	char sendBuf[50];
	char recvBuf[50];

	bool socketConnet();
};

socketTcp :: socketTcp()
{
	memset(sendBuf,0,50);
	memset(recvBuf,0,50);

	socketConnet();
}

socketTcp :: ~socketTcp()
{
	closesocket(sockConn);
	WSACleanup();
}

bool socketTcp :: sendMessage(char * sendBuffer)
{
	//sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));//inet_ntoa网络地址转换转点分十进制的字符串指针
	send(sockConn,sendBuffer,strlen(sendBuffer)+1,0);

	return true;
}

bool socketTcp :: recvMessage(char recvBuffer[50])
{
	recv(sockConn,recvBuffer,50,0);
	//printf("%s\n",recvBuf);

	return true;
}


bool socketTcp :: socketConnet()
{
	wVersionRequested = MAKEWORD( 1, 1 );//第一个参数为低位字节;第二个参数为高位字节

	err = WSAStartup( wVersionRequested, &wsaData );//对winsock DLL(动态链接库文件)进行初始化,协商Winsock的版本支持,并分配必要的资源。
	if ( err != 0 )
	{
		return false;
	}

	if ( LOBYTE( wsaData.wVersion ) != 1 ||HIBYTE( wsaData.wVersion ) != 1 )//LOBYTE()取得16进制数最低位;HIBYTE()取得16进制数最高(最左边)那个字节的内容		
	{
		WSACleanup( );
		return false;
	}

	sockSrv=socket(AF_INET,SOCK_STREAM,0);//创建socket。AF_INET表示在Internet中通信;SOCK_STREAM表示socket是流套接字,对应tcp;0指定网络协议为TCP/IP
	addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);	//htonl用来将主机字节顺序转换为网络字节顺序(to network long)
	//INADDR_ANY就是指定地址为0.0.0.0的地址,
	//表示不确定地址,或“任意地址”。”
	addrSrv.sin_family=AF_INET; 
	addrSrv.sin_port=htons(6000);//htons用来将主机字节顺序转换为网络字节顺序(to network short)

	bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//将本地地址绑定到所创建的socket上,以使在网络上标识该socket

	listen(sockSrv,5);//socket监听,准备接受连接请求。
	len=sizeof(SOCKADDR);

	sockConn=accep
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值