⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 communication.c

📁 rsh身份验证
💻 C
字号:
#include <stdio.h>
#include "Communication.h"

SOCKET CommInit(char IPAddr[])
{
	int nRet = SOCKET_ERROR;
		
	
	WSADATA WSStartData;
	SOCKET ClientSock;
	struct sockaddr_in stSvrAddrIn;
	
	WSAStartup (MAKEWORD (2, 0), &WSStartData);
									
	ClientSock = socket(AF_INET, SOCK_STREAM, 0);
	
	memset (&stSvrAddrIn, 0, sizeof(stSvrAddrIn));    
	stSvrAddrIn.sin_family      = AF_INET;
    stSvrAddrIn.sin_port        = htons(SERVER_PORT); 
    stSvrAddrIn.sin_addr.s_addr = inet_addr(IPAddr);

	nRet = connect(ClientSock, (SOCKADDR*)&stSvrAddrIn, sizeof(SOCKADDR));

	if (nRet==SOCKET_ERROR)
		return -1;
	else
		return ClientSock;
}

int readn(SOCKET sd, LPBYTE pBuffer, LONG32 nRemainRecv)
{
	DWORD Disconnect = 0;
	LONG32 nXfer, nRequire;
	nRequire = nRemainRecv;
	while(nRemainRecv > 0 && !Disconnect)
	{
		if((nXfer = recv(sd, pBuffer, nRemainRecv, 0)) == SOCKET_ERROR)
		{
			return(SOCKET_ERROR);
		}
		Disconnect = (nXfer == 0);
		nRemainRecv -= nXfer; pBuffer += nXfer;
	}
	return (nRequire - nRemainRecv);
}

int writen(SOCKET sd, LPBYTE pBuffer, LONG32 nRemainRecv)
{
	DWORD Disconnect = 0;
	LONG32 nXfer, nRequire;
	nRequire = nRemainRecv;
	while(nRemainRecv > 0 && !Disconnect)
	{
		if((nXfer = send(sd, pBuffer, nRemainRecv, 0)) == SOCKET_ERROR)
		{
			return(SOCKET_ERROR);
		}
		Disconnect = (nXfer == 0);
		nRemainRecv -= nXfer; pBuffer += nXfer;
	}
	return (nRequire - nRemainRecv);
}

//static BOOL SendRequestMessage (REQUEST *pREQUEST, SOCKET sd)
//{
//	
//	return TRUE;
//}
//
//static BOOL ReceiveResponseMessage (RESPONSE *pRESPONSE, SOCKET sd)
//{	
//	return TRUE;
//}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -