网络编程

一:本地回路的ip地址:127.0.0.1
端口号的范围为0-65535之间,0-1023是用于一些知名的网络服务和应用。
udp与TCP
TCP(Transmission Connection Protocol)传输控制协议,是面向连接的通信协议。
UDP(User Datagram Protocol),是无连接通信协议。
Socket
Socket是网络驱动层提供给应用程序编程的接口和一种机制。
可以把Socket比喻成是一个港口码头。应用程序只要把货物放到码头,就算完成了货物的运送。应用程序只需等待货物到达码头后,将货物取走。
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的ip和Port。
Socket数据发送过程
1应用程序产生Socket,2同时调用bind将Socket的信息通知给驱动程序,3应用程序将要发送的数据传给Socket,4驱动程序从Socket取出数据并通过网卡发送出去。
Socket数据接收过程
1应用程序产生Socket,2同时调用bind将Socket的信息通知给驱动程序,3驱动程序根据从网卡传送来的数据报中的指定目标端口号将处理后的数据传送到相应的Socket中,3应用程序从Socket中取数据。
java中的网络编程类
位于java.net包中。
DatagramSocket类用于UDP通信。
ServerSocket类用于TCP通信的服务器端。
Socket类用于TCP通信的服务器和客户端。
二:
UDP网络程序
DatagramSocket类
DatagramPacket类
InetAddress类

DatagramSocket类
其构造函数有:public DatagramSocket()、public DatagramSocket(int port)、public DatagramSocket(int port,InetAddress ddr)
send(DatagramPacket p)方法
close方法
DatagramPacket类
DatagramPacket就如同码头的发送和接收数据的集装箱。
其构造函数有:public DatagramPack(byte[] buf,int length)(用于创建接收数据的包)、public DatagramPack(byte[] buf,int length,InetAddress address,int port)(用于发送数据的包,必须要指定对方的地址和端口号)
其有getInetAddress和getPort方法以及getData和getLength方法。
InetAddress类
InetAddress是表示ip地址的一个类,计算机地址如“192.168.0.1”、“www.itcast.cn”等
其有把字符串ip地址转换的getByName方法。
简单的UDP程序编程举例:
import java.net.*;
public class UdpSend{
 DatagramSocket ds=new DatagramSocket();
String strInfo="hello www.itcast.cn";
ds.send(new DatagramPacket(strInfo.getByte(),strInfo.length(),InetAddress.getByName("192.168.0.3"),3000));
ds.close();
}
}
接收程序:
import java.net.*;
public class UdpRecv{
 public static void main(String[] args){
           DatagramSocket ds=new DatagramSocket(3000);
 byte[] buf=new byte[1024];
        DatagramPacket dp=new DatagramPacket(buf,1024);
 ds.receive(dp);
 String strInfo=new String(dp.getData(),0,dp.getLength())+"from"+dp.getAddress().getHostAddress()+":"+dp.getPort();
 System.out.println(strInfo);
 ds.close();
}
}
对于发送中文的时候,strInfo.length()应改为strInfo.getByte().length,因为strInfo.length()是字符串个数,而strInfo.getByte().length为字节个数

TCP网络程序
工作原理:
tcp客户端程序与服务器端程序交互过程:
(1)服务器程序创建一个ServerSocket,然后调用accept方法等待客户来连接。
(2)客户端程序创建一个Socket并请求与服务器建立连接。
(3)服务器收到客户的连接请求,并创建一个新的Socket与该客户建立专线连接。
(4)建立连接的两个Socket在一个单独的线程(由服务器程序创建)上对话。

简单的TCP服务器程序编程举例:
import java.net.*;
import java.io.*;
public class TcpServer{
public static void main(String[] args){
ServerSocket ss=new ServerSocket(8001);
Socket s=ss.accept();
InputStream ips=s.getInputStream();
OutputStream ops=s.getOutputStream();
ops.write("welcome to www.itcast.cn".getByte());
byte[] buf=new byte[1024];
int len=ips.read(buf);
System.out.println(new String(buf,0,len));
ips.close();
ops.close();
s.close();
ss.close();

}
}

在TCP网络连接上传递对象
ObjectInputStrea和ObjectOutputStream可以从底层输入流中读取对象类型的数据和将对象类型的数据写入高底层输出流中。
使用ObjectInputStrea和ObjectOutputStream来包装底层网络字节流,TCP服务器和TCP客户端之间就可以传递对象类型的数据。

访问Internet网络资源
URL(Uniform Resource Locator)
基本组成:协议、主机名、端口号、资源名。例如http://www.itcast.cn:8080/index.html
相对URL,例如"/a.html"
URL编码规则:
将空格转化为加号。对字母数字保持不变。对于所以其他字符则是用这个字符在内存中的十六进制表示,并在每个字节前加%,如字符“+”用%2B表示。中文字符在内存中占用两字节,字符“中”用%D6%D0表示。空格也可以用%20表示。

http协议的会话过程:
基于http1.0协议
客户机和服务器建立连接后,客户机向服务器发送请求,服务器接到请求后向客户机回送响应信息后关闭连接
基于http1.1协议
客户机和服务器建立连接后,客户机向服务器发送请求信息,服务器接到请求后向客户机回送响应信息,这个期间客户机可以发送n次请求同时服务器响应请求,客户机发出关闭连接才结束会话连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux网络编程(总共41集) 讲解Linux网络编程知识,分以下四个篇章。 Linux网络编程TCP/IP基础篇 Linux网络编程socket编程篇 Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等通信、封装、分用、端口) 02TCPIP基础(二) 最大传输单元(MTU)/路径MTU 以太网帧格式 ICMP ARP RARP 03TCPIP基础(三) IP数据报格式 网际校验和 路由 04TCPIP基础(四) TCP特点 TCP报文格式 连接建立三次握手 连接终止四次握手 TCP如何保证可靠性 05TCPIP基础(五) 滑动窗口协议 UDP特点 UDP报文格式 Linux网络编程socket编程篇 06socket编程(一) 什么是socket IPv4套接口地址结构 网络字节序 字节序转换函数 地址转换函数 套接字类型 07socket编程(二) TCP客户/服务器模型 回射客户 /服务器 socket、bind、listen、accept、connect 08socket编程(三) SO_REUSEADDR 处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline实现 用readline实现回射客户/服务器 getsockname、getpeername gethostname、gethostbyname、gethostbyaddr 11socket编程(六) TCP回射客户/服务器 TCP是个流协议 僵进程与SIGCHLD信号 12socket编程(七) TCP 11种状态 连接建立三次握手、连接终止四次握手 TIME_WAIT与SO_REUSEADDR SIGPIPE 13socket编程(八) 五种I/O模型 select 用select改进回射客户端程序 14socket编程(九) select 读、写、异常事件发生条件 用select改进回射服务器程序。 15socket编程(十) 用select改进第八章点对点聊天程序 16socket编程(十一) 套接字I/O超时设置方法 用select实现超时 read_timeout函数封装 write_timeout函数封装 accept_timeout函数封装 connect_timeout函数封装 17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) udp聊天室实现 21socket编程(十六) UNIX域协议特点 UNIX域地址结构 UNIX域字节流回射客户/服务 UNIX域套接字编程注意点 22socket编程(十七) socketpair sendmsg/recvmsg UNIX域套接字传递描述符字 Linux网络编程之进程间通信篇 23进程间通信介绍(一) 进程同步与进程互斥 进程间通信目的 进程间通信发展 进程间通信分类 进程间共享信息的三种方式 IPC对象的持续性 24进程间通信介绍(二) 死锁 信号量 PV原语 用PV原语解决司机与售票员问题 用PV原语解决民航售票问题 用PV原语解决汽车租赁问题 25System V消息队列(一) 消息队列 IPC对象数据结构 消息队列结构 消息队列在内核中的表示 消息队列函数 26System V消息队列(二) msgsnd函数 msgrcv函数 27System V消息队列(三) 消息队列实现回射客户/服务器 28共享内存介绍 共享内存 共享内存示意图 管道、消息队列与共享内存传递数据对比 mmap函数 munmap函数 msync函数 29System V共享内存 共享内存数据结构 共享内存函数 共享内存示例 30System V信号量(一) 信

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值