TCP/IP(7)——网络编程(1)基础函数介绍

今天介绍最简单的客户机/服务器程序demo

我们将了解到网络编程的大概步骤,在win32下需要使用哪些函数。(函数参数不用记,考试考代码改错,改代码注释,关闭资源什么的)

解释:该图为TCP的最简单实现。

话不多说,直接看客户机和服务器的demo(备注看懂就行):

客户端:


#include "stdafx.h"
#include <Winsock2.h>//win32的库加载
#include <stdio.h>
#pragma comment(lib, “ws2_32.lib”); //使用静态链接库
/*
动态数据库和静态数据库都是共享代码的一种方式
静态数据库(.lib)的代码转载速度快,执行速度比动态数据库快。因为一开始就调用了整个静态链接库。
而且只要保证开发者的计算机有正确的.LIB文件,在以二进制形式发布程序的时候就不需要考虑在用户的计算机上,。lib文件是否存在以及其版本问题。
动态数据库更加的节省内存,因为仅仅调用自己需要的,不需要的就不需要调用。dll文件和exe文件独立,只要输出的接口不变(名字,参数,返回类型)
那么,更换DLL不会对exe操作影响,极大提高了可维护性和可拓展性。
不同编程语音只要遵循函数调用约定,则可以调用同一个DLL函数
总结:DLL适合大型软件开发,但是缺点是DLL的应用程序不是自完备的,需要依赖DLL,不存在DLL则会提示“缺少XXX.dll,程序无法运行”
*/

//服务器端口号为5050
#define DEFAULT_PORT 9999
#define DATA_BUFFER  1200

int main(int argc, char* argv[])
{
	WSADATA wsaData;//协议栈结构体
	SOCKET sClient;//客户端的socket结构体

	int iPort = DEFAULT_PORT;

	//从服务器端接收的数据长度
	int isendLen, irecvLen;

	//接收数据的缓冲
	char buf[DATA_BUFFER];

	//服务器端地址
	struct sockaddr_in ser;//INET协议族地址结构(sockaddr_in)
	/*使用前进行清零,以养成良好习惯
	使用下面两个函数实现
	void ZeroMemory(PVOID  destination, SIZE_T  length); 
	void memset(void *dest, int c, size_t  count);
	*/
	//判断输入的参数是否正确
	if (argc < 2) {
		//提示在命令行中输入服务器IP地址
		printf("Usage:client [server ip address]\n");
		return -1;
	}


	//接收数据的缓冲区初始化
	memset(buf, 0, sizeof(buf));
	//1.windows socket初始化结构体( WSAData )
	if (WSASta
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值