1、常用的网络协议Tcp/ip协议簇
TCP协议
1、常见的模式
B/S模式 浏览器/服务器模式
C/S模式 客户端/服务器模式
2、TCP网络连接时的三次握手

- 客户端申请连接服务器
- 服务器同意客户端连接
-
3、断开时的四次挥手

客户端向服务器发送断开连接请求
- 服务器收到后回应客户端
- 服务器再向客户端发送断开请求
-
4、Java实现TCP连接上传文件
/*客户端*/public class tcpsent(){public static void main(String[] args){try {InetAddress ip = InetAddress.getByName("localhost");int port = 9999;Socket s= new Socket(ip, port);OutputStream os =s.getOutputStream();byte[] buffer =new byte[1024];int len;FileInputStream filein =new FileInputStream(new File("img\\mayi.jpg"));while((len=filein.read(buffer))!=-1) {os.write(buffer,0,buffer.length);}filein.close();os.close();s.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();};}}
```java //服务端 public class tcpreceive {
public static void main(String[] args) {
try {ServerSocket s = new ServerSocket(9999);Socket socket = s.accept();InputStream os = socket.getInputStream();FileOutputStream fileout = new FileOutputStream(new File("C:\\Users\\TR\\Pictures\\Camera Roll\\mayi.jpg"));byte[] buffer = new byte[1024];int len;while((len=os.read(buffer))!=-1) {fileout.write(buffer,0,len);}System.out.println("ok");fileout.close();os.close();s.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}
} }
<a name="JurEj"></a>#### 5、java实现tcp通信的几个类```java//服务器ServerSocket(int port);//服务器对象Socket ServerSocket.accept();阻塞等待客户端连接请求,获取一个Socket对象//客户端Socket(ip,port);//客户端对象Socket.getInputStream //获取输入流,一般用于服务器接收客户端传来的数据流Socket.getOutputStream //获取输出流,一般用于客户端向服务器发送数据流//文件上传涉及的io对象FileOutputStream(new File(path)) //文件输出流,用于将文件写入磁盘FileInputStream(new File(path)) //文件输入流,用于读入指定路径的文件//通用方法close() //关闭流(连接)
UDP协议
1、UDP实现数据包发送到指定端口
//发送端public static void main(String[] args) {try {BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(System.in));String data = bufferedreader.readLine();System.out.println(data);byte[] buffer = data.getBytes();DatagramPacket p =new DatagramPacket(buffer,0,buffer.length,InetAddress.getByName("localhost"),6666);DatagramSocket s =new DatagramSocket(9999);s.send(p);s.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
//接收端public static void main(String[] args) {//6666端口try {DatagramSocket s =new DatagramSocket(6666);byte[] buf =new byte[1024];DatagramPacket packet = new DatagramPacket(buf,0,buf.length);s.receive(packet);String msg =new String(packet.getData(),0,packet.getLength());System.out.println(msg);s.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
2、java实现udp通信的几个类
//数据发射台DatagramSocket(port) //用来接收和发送数据包的‘发射台’,端口号为port.receive(DatagramPacket) //用来将接收包裹.sent(DatagramPacket) //用来发送包裹.close() //关闭连接//数据包裹DatagramPacket(buf,0,buf.length,ip,port) //用来传输数据的包裹,可以被DatagramSocket对象发送到目标地址端口.getData() //获取包裹里传递的数据//除此之外,还可以获取发送端的端口号和ip
