网络编程

网络编程中一些小函数,getifaddrs()等

你。 提交于 2019-12-10 04:34:31
#include <stdio.h> #include <stdlib.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #include <string.h> #include <net/if.h> #include <net/if_arp.h> #include <arpa/inet.h> #include <errno.h> typedef long LONG; typedef char CHAR; #define CONST const #ifndef SUCCESS #define SUCCESS 0 #endif #ifndef FAIL #define FAIL -1 #endif LONG GetMac(CONST CHAR *pcIfName, CHAR *pcMac) { if (NULL == pcIfName || NULL == pcMac) { printf("NULL == pcIfName || NULL == pcMac\n"); return FAIL; } LONG lFd = 0, lRet = FAIL; struct ifreq ifr; memset(&ifr, 0, sizeof(ifr));

笔记一、网络编程入门

喜夏-厌秋 提交于 2019-12-10 03:22:06
一、网络编程入门 1.1 软件结构 C/S和B/S架构各有优势,但都离不开网络的支持。网络编程就是在一定的协议下,实现两台计算机的通信的程序。 1.2 网络通信协议 网络通信协议:通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤做了统一规定。通信双方必须同时遵守才能完成数据交换。 TCP/IP协议:传输控制协议/因特网互联协议,它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议。并采用了4层的分层模型。每一层都呼叫它的下一层所提供的协议来完成自己的需求。 应用层:HTTP FTP TFTP SMTP SNMP DNS 传输层:TCP UDP 网络层:ICMP IGMP IP ARP RARP 数据链路层和物理层:由底层网络定义的协议 链路层:用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。 网络层:核心,用于将传输的数据进行分组,将分组数据发送到目标计算机或网络。 传输层:使网络程序进行通信,在进行网络通信时,可以采用TCP或UDP协议。 应用层:负责应用程序的协议,例如HTTP协议、FTP协议。 1.3 协议分类 通信的协议比较复杂

(10)Java基础之网络编程

和自甴很熟 提交于 2019-12-10 01:50:21
(10)【网络编程】 主要内容 软件架构CS/BS 网络通信三要素 TCP通信 Socket套接字 ServerSocket 第一章 网络编程入门 1.1软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。 B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。 网络编程 ,就是在一定的协议下,实现两台计算机的通信的程序。 1.2 网络通信协议 **网络通信协议:**通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。 TCP/IP协议: 传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型

socket网络编程1

江枫思渺然 提交于 2019-12-09 23:03:13
1.什么是网络: 网络是信息传输、接收、共享的虚拟平台。 2.什么是网络编程: 通过操作相应的api调度计算机硬件资源,并利用传输管道(网线)进行数据交换的过程 。 具体涉及:网络模型、套接字、数据包 3.7层网络模型-OSI 应用层:略 表示层:将应用的数据表示为对应的数据层面的数据,比如说字符串转化为一些人看不懂的奇奇怪怪的数据 会话层:不同机器之间用户之间建立管理的作用。 传输层:接收上一层的数据,并在必要的时候对数据进行分割然后交给网络层,会保证这些数据的有效性(将数据有效的传递给对方)。 TUP-UDP协议层、Socket 网络层:控制子网的运行。比如逻辑地址进行分组的传输以及路由的选择。 数据链路层:主要是进行物理的地址寻找,同时将原始的比特流转化为逻辑的传输路线 物理层:最底层的机械电子传输.....(电信号、光信号传输) 4.网络模型对应关系: 来源: https://www.cnblogs.com/lyjblogg/p/12005091.html

JavaSE-网络编程

守給你的承諾、 提交于 2019-12-09 18:59:29
目录 第一章:网络编程基础 1.1-软件结构 1.2-网络通信协议 1.3-协议分类 1.4-网络编程三要素 第二章:TCP通信程序 2.1-TCP通信程序介绍 2.2-Socket类 2.3-ServerSocket类 2.4-简单的TCP网络程序 第三章:文件上传 3.1-文件上传分析图 3.2-基本实现 3.3-优化分析 3.4-回写实现 第四章:模拟B/S服务器 第一章:网络编程基础 1.1-软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。 B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。 网络编程 ,就是在一定的协议下,实现两台计算机的通信的程序。 1.2-网络通信协议 ​ 网络通信协议: 通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就 好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了 统一规定,通信双方必须同时遵守,最终完成数据交换。 ​ TCP/IP协议: 传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是 Internet最基本

Python网络编程

99封情书 提交于 2019-12-09 16:21:47
一、基于TCP协议的socket套接字编程 1、套接字工作流程 先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束,使用以下Python代码实现: import socket # socket_family 可以是 AF_UNIX 或 AF_INET。socket_type 可以是 SOCK_STREAM 或 SOCK_DGRAM。protocol 一般不填,默认值为 0 socket.socket(socket_family, socket_type, protocal=0) # 获取tcp/ip套接字 tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 获取udp/ip套接字 udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 1、 服务端套接字函数 s. bind ():绑定(主机,端口号)到套接字 s.

网络编程之NIO

↘锁芯ラ 提交于 2019-12-08 23:36:28
一、Buffer缓冲区 package com.itbac.net.NIO.BIO; import java.nio.ByteBuffer; /** * Buffer缓冲区 */ public class BufferDemo { public static void main(String[] args) { //构建一个byte 字节缓冲区,容量是4 // allocate分配内存(在堆中)堆中内存要复制到堆外才能用于网络通信,因为堆中有GC管理 // allocateDirect 分配内存(在堆外),减少一次内存复制操作,提高性能,但是要自己回收内存 ByteBuffer byteBuffer = ByteBuffer.allocate(4); System.out.println(String.format("初始化:capacity容量:%s,position位置:%s,limit限制:%s", byteBuffer.capacity(), byteBuffer.position(), byteBuffer.limit())); //写入3字节的数据 byteBuffer.put((byte) 1); byteBuffer.put((byte) 2); byteBuffer.put((byte) 3); System.out.println(String.format(

Python网络编程05----django与数据库的交互

旧时模样 提交于 2019-12-08 22:58:19
介绍 Django为多种数据库后台提供了统一的调用API,在Django的帮助下,我们不用直接编写SQL语句。Django将关系型的表(table)转换成为一个类(class)。而每个记录(record)是该类下的一个对象(object)。我们可以使用基于对象的方法,来操纵关系型数据库。 设置数据库 设置数据库需要修改 settings.py 文件 如果使用的数据库是mysql: [python] view plain copy DATABASES = { 'default' : { 'ENGINE' : "django.db.backends.mysql", 'NAME' : "djangodb", 'HOST' : "localhost", 'USER' : "root", 'PASSWORD' : "123456", } } PORT如果不设置,会使用默认端口3306 如果没有安装mysql,你也可以使用sqlite。SQLite非常适合测试,甚至可以部署在没有大量并发写入的情况下。 由于SQLite使用的本地文件系统作为存储介质并且用原生的文件系统权限来做访问控制,像主机、端口、用户、密码这种信息统统不需要 只需要输入如下信息: [python] view plain copy DATABASES = { 'default' : { 'NAME' : r 'C: