java基础教程-网络编程(七)

七、网络编程

7.1.IP协议

  最重要的贡献是IP地址

7.2.TCP和UDP协议

  TCP(快)可靠传输,发送时必须建立连接(三次握手协议 )

  UDP(慢)不可靠传输,发送时无须建立连接

7.3.TCP 的TCP Server和TCP Client

    

  注意,要首先启动Server,再启动Client

  端口号是应用的入口,有两个字节,所以每个服务器最多能运行65536个应用程序,而TCP的端口和UDP的端口不一样,定义端口时,尽量定义1024以上的。

  特别典型的端口号,http  80;

//TCP Server

import java.net.*;

import java.io.*;

public class TCPServer {

public static void main(String[] args) throws Exception {

ServerSocket ss = new ServerSocket(6666);

while(true) {

Socket s = ss.accept();//阻塞函数,一直在这等,直到有访问,才会继续执行

System.out.println("a client connect!");

DataInputStream dis = new DataInputStream(s.getInputStream());

System.out.println(dis.readUTF());

dis.close();

s.close();

}

}

}
//TCP Client

import java.net.*;

import java.io.*;

public class TCPClient {

public static void main(String[] args) throws Exception {

Socket s = new Socket("127.0.0.1", 6666);

OutputStream os = s.getOutputStream();

DataOutputStream dos = new DataOutputStream(os);

Thread.sleep(3000);

dos.writeUTF("hello server!");

dos.flush();

dos.close();

s.close();

}

}

  

7.4.UDP   Server和Client(UDP只能传送字节数组)

//UDP   Server

import java.net.*;

public class TestUDPServer

{

public static void main(String args[]) throws Exception

{

byte buf[] = new byte[1024];

DatagramPacket dp = new DatagramPacket(buf, buf.length);

DatagramSocket ds = new DatagramSocket(5678);

while(true)

{

ds.receive(dp);

System.out.println(new String(buf,0,dp.getLength()));//String的构造函数

}

}

}

   

//UDP Client

import java.net.*;

public class TestUDPClient

{

public static void main(String args[]) throws Exception

{

byte[] buf = (new String("Hello")).getBytes();

DatagramPacket dp = new DatagramPacket(buf, buf.length, 

   new InetSocketAddress("127.0.0.1", 5678)

   );

DatagramSocket ds = new DatagramSocket(9999);//client自己的端口,因为UDP不是面向连接的

ds.send(dp);

ds.close();

}

}

  

//TestUDP Client

import java.net.*;

import java.io.*;

public class TestUDPClient

{

public static void main(String args[]) throws Exception

{

long n = 10000L;

ByteArrayOutputStream baos = new ByteArrayOutputStream();

DataOutputStream dos = new DataOutputStream(baos);

dos.writeLong(n);

byte[] buf = baos.toByteArray();//将long型数据转化成字符数组的形式,进行输入

System.out.println(buf.length);

DatagramPacket dp = new DatagramPacket(buf, buf.length, 

   new InetSocketAddress("127.0.0.1", 5678)

   );

DatagramSocket ds = new DatagramSocket(9999);

ds.send(dp);

ds.close();

}

}

  

//TestUDP Server

import java.net.*;

import java.io.*;

public class TestUDPServer

{

public static void main(String args[]) throws Exception

{

byte buf[] = new byte[1024];

DatagramPacket dp = new DatagramPacket(buf, buf.length);

DatagramSocket ds = new DatagramSocket(5678);

while(true)

{

ds.receive(dp);

ByteArrayInputStream bais = new ByteArrayInputStream(buf);

DataInputStream dis = new DataInputStream(bais);

System.out.println(dis.readLong());//将字符数组读成long型

}

}

}

  

时间: 2024-08-01 20:26:35

java基础教程-网络编程(七)的相关文章

Java基础之网络编程

Java网络编程 课前思考1. 什么是TCP/IP协议?2. TCP/IP有哪两种传输协议,各有什么特点?3. 什么是URL?4. URL和IP地址有什么样的关系?5. 什么叫套接字(Socket)?6. 套接字(Socket)和TCP/IP协议的关系?7. URL和套接字(Socket)的关系?8.1 网络编程基本概念,TCP/IP协议简介 8.1.1 网络基础知识      网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中有两个主要的问题,一个是如何准确的定位网络

Java基础知识网络编程

概述 java除了可以完成本地的操作,也可以完成网络通讯.比如想从自己的电脑上发送一个信息到张三的电脑上,张三收到信息之后再给我返回一个信息,利用java实现两个机器之间的数据的通讯.数据通讯的原理就是数据传输的过程,与本机的区别就是涉及到网络. 网络通讯要具备的要素和模型: 比如和张三通讯 1.首先要找到张三的主机,张三主机的标识就是IP地址(也就是主机的名字,IP地址由4个字节表示,可以表示很多主机,避免冲突). 2.和张三通讯的方式有很多种,可以是QQ,也可以是微信.两个机器都要装有通讯的

黑马程序员-Java基础之网络编程

网络编程 实现计算机互联的三要素: 1.IP地址 本机回路IP:127.0.0.1 2.端口号(逻辑端口):用于标识应用程序. 端口号0~65535之间的整数:0~1024之间大部分已被用于一些知名的网络服务和应用,所以现在开发的网络应用程序端口号一般是1024以后的整数. 3.通信协议 TCP:三次握手机制,面向连接,稍慢.可靠 UDP:无连接,每个数据报大小限制在64K内.传输快.不可靠. 网络参考模型 TCP/IP参考模型 应用层:javaWeb开发 传输层:TCP/UDP 网际层:IP

java基础篇---网络编程(TCP程序设计)

TCP程序设计 在Java中使用Socket(即套接字)完成TCP程序的开发,使用此类可以方便的建立可靠地,双向的,持续的,点对点的通讯连接. 在Socket的程序开发中,服务器端使用serverSocket等待客户端的连接,对于Java的网络程序来讲,每一个客户端都使用一个socket对象表示. 在Java的网络程序中,客户端只要符合连接的通讯协议,那么服务端都可以进行接收. ServerSocket类主要用于服务器端程序的开发上,用于接收客户端的连接请求. Socket在服务器端每次运行时都

java基础篇---网络编程

一:IP与InetAddress 在Java中支持网络通讯程序的开发,主要提供了两种通讯协议:TCP协议,UDP协议 可靠地连接传输,使用三方握手的方式完成通讯 不可靠的连接传输,传输的时候接受方不一定可以接受的到 在Java中的所有网络程序的开发类都在java.net包中存在 IP地址简介 IP地址是指互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写.IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络

Java基础:网络编程总结

Java语言是在网络环境下诞生的,它是第一个完全融入网络的语言,虽然不能说它是对支持网络编程做得最好的语言,但是必须说是一种对于网络编程提供良好支持的语言.这归功于java的自身优势: 1.java语言与生俱来就是与平台无关的,有良好的跨平台性,所以运行在不同在平台上的java程序能够方便地进行网络通信. 2.java语言具有良好的安全机制,可以对程序进行权限检查,这对网络程序是至关重要的. 3.JDK中有丰富的网络类库,大大简化了网路变成的开发过程. 一.概念

Java基础7——网络编程

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程就是用来实现网络互联的不同计算机上运行的程序间可以进行数据交换 网络模型研究计算机网络之间以何种规则进行通信 网络模型一般是指OSI参考模型 TCP/IP参考模型 网络编程三要素 IP地址——网络中每台计算机的唯一标识 端口——计算机上每个应用程序的唯一标识 协议——通信之间的规则 计算机只能识别二进制的

java基础篇---网络编程(UDP程序设计)

UDP程序设计 在TCP的索引操作都必须建立可靠地连接,这样一来肯定会浪费大量的系统性能,为了减少这种开销,在网络中又提供了另外一种传输协议---UDP,不可靠的连接,这种协议在各个聊天工具中被广泛的应用. 咋UDP开发中使用DatagramPacket包装一条要发送的信息,之后使用DatagramSocket用于完成信息的发送操作. 例如:现在使用聊天工具进行聊天的功能,那么A的发送的信息B不一定可以接受的到,因为使用的是UDP的协议. UDP中主要是使用数据报协议发送的. DatagramP

黑马程序员——【Java基础】——网络编程

一.网络模型概述 网络模型示意图: 说明: (1)数据的传输:在用户端,应用层的数据,经过层层封包,最后到物理层,通过网络发送到网络的另一端,再从物理层到应用层进行层层解包. (2)常用层的协议,包括:应用层的FTP和HTTP协议等:传输层的UDP和TCP等:网际层的IP等. (3)对于开发者来讲,一般处于传输层和网际层.对于用户,通常停留在应用层. 二.网络通讯要素 网络通讯要素,包括:IP地址.端口号 以及 传输协议. (一)IP地址 1.IP地址概述 (1)它是网络设备标识: (2)可用主