每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。
端口号范围从0-65535
编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。
常用端口
mysql: 3306
oracle: 1521
web: 80
tomcat: 8080
QQ: 4000
为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
java.net包中J2SE的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。
java.net
包中提供了两种常见的网络协议的支持:
UDP
面向无连接,数据不安全,速度快。不区分客户端与服务端。
TCP
面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。
//发送端
public class UdpTalkClient {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(8989);
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));
String s = bufferedReader.readLine();
byte[] bytes=s.getBytes();
DatagramPacket datagramPacket = new DatagramPacket(bytes,0,bytes.length,new InetSocketAddress("localhost",6666));
socket.send(datagramPacket);
socket.close();
}
}
public class UdpTalkServer {
public static void main(String[] args) throws Exception {
DatagramSocket datagramSocket = new DatagramSocket(6666);
byte[] bytes=new byte[1024*60];
DatagramPacket packet = new DatagramPacket(bytes,0,bytes.length);
datagramSocket.receive(packet);
byte[] data = packet.getData();
System.out.println(new String(data));
}
}
/*网络编程 (socket编程)
* tcp(理解为打电话)和udp(理解为写信)是数据层的
* http是应用层的,底层的实现还是用tcp和udp
*
* */
/* 创建客户端
* 1.创建一个套接字并将其连到指定远程地址的指定远程端口
* 2. 操作 输入输出流
* 3. 释放资源
*
* */
import java.io.*;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8888);
DataOutputStream outputStream= new DataOutputStream(socket.getOutputStream());
String str="世界你好,请善良待我";
outputStream.writeUTF(str);
outputStream.flush();
outputStream.close();
socket.close();
}
}
/* 创建服务器
* 1.创建绑定到特定服务器端口的套字节
* 2.阻塞式等待连接 accept()
* 3.操作:输入输出流
* 4.释放资源
* */
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
Socket accept = serverSocket.accept();
System.out.println("---创建一个客户端连接-------");
DataInputStream inputStream = new DataInputStream(accept.getInputStream());
String s = inputStream.readUTF();
System.out.println(s);
inputStream.close();
}
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_45297578/article/details/125288341
内容来源于网络,如有侵权,请联系作者删除!