什么是网络编程:
网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用。
网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是
数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理,代码、开发工具、数据库、
服务器架设和
网页设计
5部分你都要接触。
网络编程最优秀的轮子就是QQ和微信了。
本人作为一个网络工程专业的学生,即会编程,又学有TCP\IP 协议族,最适合搞这个了。是的,网络编程要求你即会编程(最好是会c++),
又要对计算机网络的知识非常精通,才能保证用户的信息不被窃听和准确快速传输。
对于网络,你首先要理解一个叫c/s模式的东西,也就是
-
客户服务器方式
客户服务器方式(简称C/S方式),为网络边缘的系统中运行的程序之间的一种通信方式。描述的是进程之间服务和被服务的关系,客户是服务请求方,服务器是服务提供方。客户服务器模式是一种分布式系统体系结构。
我们先来写一个最简单的,能传送文字的客户端代码:
#include<stdio.h>
#include<winsock2.h>
#pragma comment(lib, "ws2_32")/* WinSock 使用的库函数 */
#define PORT 7 //端口号
#define SIZE 256 //最大使用内存
int main(int argc,char **argv)
{
WSADATA wsa_data;
SOCKET soc;
struct sockaddr_in serv_addr;//服务器地址
int result,len;
char s[SIZE],recv_buf[SIZE];
printf("输入发送的信息\n");
scanf("%s",s);
len = strlen(s);
WSAStartup(MAKEWORD(2,0),&wsa_data);//初始化动态链接库,MAKE函数制定版本号
serv_addr.sin_family = AF_INET; //填写地址和端口号
serv_addr.sin_port = htons(PORT);
serv_addr.sin_addr.s_addr = inet_addr(argv[1]);
soc = socket(AF_INET,SOCK_STREAM,0); //创建socket,使用TCP面向连接字节流
result = connect(soc,(struct sockaddr *)&serv_addr,sizeof(serv_addr)); //建立连接,TCP三次握手
result = send(soc,s,len,0); //发送
result = recv(soc,recv_buf,SIZE,0);
closesocket(soc);//释放socket资源,TCP4次挥手
WSACleanup();
return 0;
}
仅仅有客户端代码,不行还要有服务器代码,服务器等我更新。
编译上面代码,用dos打开,因为要输入地址(参数),为了省事,用回环地址127.0.0.1测试就可以了,过程如下
1.打开服务器,服务器开始侦听
2.打开客户端并使用回环地址
3.输入文字,可以看到服务器显示了该文字,达到发送信息的目地,值得一提的是,就这一端文字,用抓包工具查看居然电脑之间发了9个包,为什么呢?我现在还不知道答案,解决了,程序就得到了优化。