网络编程---基础篇
第一个网络程序
说明:
《
网络编程》一文将从简单的socket调用到相对复杂的异步网络通信逐步与大家分享网路编程的乐趣,我们将在WINDOWS下使用VS2010为大家展示代码以及程序运行效果。我们不会使用WINDOWS封装的socket工具,这是出于对跨平台的要求,此外我们着重分享如何编写网络程序,对于计算机网络的基础只会在文中零星介绍,如果读者对计算机网络ISO层次划分,以及何为IP,何为TCP等知识缺乏,请参看其他文章了解,后期笔者将适当补充。作者水平有限,如有不足与错误拜请各位读者批评指正,谢谢大家。
1.概述
下面将介绍如何使用socket建立与远端主机建立TCP连接,远端服务端开启新线程为接入的客户端服务。服务内容为接收客户端发送的字串显示在屏幕,并发送回客户端。客户端则接收用户键入的字串发送至服务端,并接收服务端回送的字串显示在屏幕上。
需要指出的是,TCP是面向连接的可靠服务,通信方一般可分为客户端与服务端,客户端主动向服务端发起TCP连接请求,服务端接受后TCP连接便建立,双方即可发送数据了。因为服务端是被动接受客户端的TCP连接,因此服务端必须指定一个固定的端口作为监听端口,来接受客户端的连接请求,而客户端端口可以由系统随机分配。具体信息见下。
1.1网络信息配置:
服务端IP:127.0.0.1
端口:4321
客户端IP:127.0.0.1
端口:系统分配
1.2服务器工作流程
1.3客户端工作流程
2程序源码
2.1服务器源码
#include <WinSock2.h>
#include <process.h>
#include <iostream>
#include <Windows.h>
using namespace std;
#pragma comment(lib, "ws2_32.lib")//导入socket库,后期建议在工程属性内添加
typedef unsigned int (__stdcall *WorkThredHandler)(void *lpParam);
/************************************************
Function:InitWinSocket
Descrip