serverdlg.cpp

来自「包括了基于网络芯片8019的单片机源程序和pc端的网络程序(VC++6.0)」· C++ 代码 · 共 124 行

CPP
124
字号
// ServerDlg.cpp : implementation file
//

#include "stdafx.h"
#include "testnet.h"
#include "ServerDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CServerDlg dialog


CServerDlg::CServerDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CServerDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CServerDlg)
	m_nServerPort = 0;
	m_nServerText = _T("");
	//}}AFX_DATA_INIT
}


void CServerDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CServerDlg)
	DDX_Text(pDX, IDC_SERVERPORT, m_nServerPort);
	DDX_Text(pDX, IDC_EDIT1, m_nServerText);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CServerDlg, CDialog)
	//{{AFX_MSG_MAP(CServerDlg)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_LISTENB, OnListen)
	ON_BN_CLICKED(IDB_RECEIVE, OnReceive)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CServerDlg message handlers

void CServerDlg::OnOK() 
{

}

void CServerDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	if (WSACleanup() != 0){
		TRACE("UnInitilize Error:%d\n", WSAGetLastError());
	}	
}

void CServerDlg::OnListen() 
{
		CWnd *pwnd=GetDlgItem(IDC_STATIC1);

    if(m_hSocket != NULL){
		closesocket(m_hSocket);
		m_hSocket = NULL;
	}
	if(m_hSocket == NULL){
		m_hSocket = socket(AF_INET, SOCK_STREAM,0);
		ASSERT(m_hSocket != NULL);
	}
	UpdateData();

	m_addr.sin_family = AF_INET;
	m_addr.sin_addr.S_un.S_addr = INADDR_ANY;
	m_addr.sin_port = htons(m_nServerPort);

	int ret = 0;
	int error = 0;
	ret = bind(m_hSocket, (LPSOCKADDR)&m_addr, sizeof(m_addr));
	if(ret == SOCKET_ERROR){
		TRACE("Bind Error: %d \n", (error = WSAGetLastError()));
		return ;
	}
	else
	{
		pwnd->SetWindowText ("bind success!");
	}
	ret = listen(m_hSocket, 2);
	if(ret == SOCKET_ERROR){
		TRACE("Listen Error: %d \n", (error = WSAGetLastError()));
		return ;
	}
	else
		pwnd->SetWindowText ("listening!");
	
}

void CServerDlg::OnReceive() 
{	
	int error=0;
	int ret=0;
	SOCKET s = accept(m_hSocket, NULL, NULL);
	if(s == SOCKET_ERROR){
		TRACE("Accept Error: %d \n", (error = WSAGetLastError()));
		return ;
	}
	ret = recv(s, buff, 256, 0);
	
	if(ret == 0 || ret == SOCKET_ERROR ){
		TRACE("Recv data error: %d\n", WSAGetLastError());
		return ;
	}
	buff[ret]='\0';
	CString str(buff);
    m_nServerText=str;
	UpdateData(FALSE);
	closesocket(s);

}

⌨️ 快捷键说明

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