1,IP 和 端口号
IP是唯一标识一个计算机 IPv(二进制)和IPv6(十六进制)
端口号 用来区分不同的程序(可以看成进程)0~6553 其中0~1023是固定端口
2,UDP和TCP的区别
对于udp和tcp的区别 :
tcp:
(1)效率相对于udp来说比较慢;但是数据不会丢失
(2)可以想象为打电话 打视频之类的
(3)三次握手,四次分手:
三次
A:你瞅啥?
B:瞅你咋地!
A:再瞅我搞你!!
四次
A:走了
B:真的要走吗?
B:真的不考虑一下吗?
A:是的。
有两个类 服务端(serverSocket)和用户端(Socket)
客户端:
1、创建Socket
对象,并指定服务器端应用程序的端口号和服务器端主机的IP地址。
2、使用Socket
的对象调用getOutputStream()
方法来获取字节输出流对象。
3、调用字节输出流的write(byte[] buf)
或者write(int b)
向服务器发送指定数据。
4、关闭资源。
package mdxy.www;
import java.io.OutputStream;
import java.net.Socket;
public class tast {
public static void main(String[] args) throws Exception{
/*客户端
1、创建Socket对象,并指定服务器端应用程序的端口号和服务器端主机的IP地址。本机IP 127.0.0.1
2、使用Socket的对象调用getOutputStream()方法来获取字节输出流对象。
3、调用字节输出流的write(byte[] buf)或者write(int b)向服务器发送指定数据。
4、关闭资源。*/
//建立Socket类
Socket socket=new Socket("127.0.0.1",5677);
//使用Socket的对象调用getOutputStream()方法来获取字节输出流对象。
OutputStream outputStream = socket.getOutputStream();
//调用字节输出流的write(byte[] buf)或者write(int b)向服务器发送指定数据。
outputStream.write("你好 服务器".getBytes());
System.out.println("已发送");
//关闭资源。
outputStream.close();
socket.close();
}
}
服务器端:
1、创建ServerSocket
对象,并指定该应用程序的端口号,端口号必须和客户端指定的端口号一样。
2、使用ServerSocket
对象的accept()
方法来监听客户端发送过来的请求,返回值为Socket对象。
3、调用Socket
对象的getInputStream()
方法获取字节输入流对象
4、调用字节输入流对象的read(byte[] buf)
或read()
方法获取数据。
5、关闭资源
package mdxy.www;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerTast {
public static void main(String[] args) throws Exception{
/*服务端
*1、创建ServerSocket对象,并指定该应用程序的端口号,端口号必须和客户端指定的端口号一样。
2、使用ServerSocket对象的accept()方法来监听客户端发送过来的请求,返回值为Socket对象。
3、调用Socket对象的getInputStream()方法获取字节输入流对象
4、调用字节输入流对象的read(byte[] buf)或read()方法获取数据。 */
System.out.println("服务端已接到信息");
//建立ServerSocket对象
ServerSocket server=new ServerSocket(5677);
//使用ServerSocket对象的accept()方法来监听客户端发送过来的请求,返回值为Socket对象
Socket socket = server.accept();
InputStream input = socket.getInputStream();
int len=0;
while ((len=input.read())!=-1){
System.out.println((char)len);
}
//关闭资源
input.close();
socket.close();
server.close();
}
}
UDP
(1)效率高,数据可能会丢失
(2)不需要接收方是否准备好 就能发送
(3)发短信
(4)不需要双方连接