传输层TCP和UDP编程模型

来源:互联网 发布:设计本软件下载 编辑:程序博客网 时间:2024/05/21 06:34

最近接触了基于这个编程模型的编程,基础编程再次熟悉了一下

一、TCP编程

服务器端:

1、创建ServerSocket对象,绑定端口

2、通过accept()监听客户端请求

3、建立连接后,通过输入输出流进行读写操作

4、关闭相关资源

客户端:

1、创建socket对象,指定服务端的地址和端口

2、通过输入输出流进行读写操作

3、关闭相关资源

Server服务器端;

System.out.println("服务端启动");ServerSocket server =new ServerSocket(44445);Socket socket=server.accept();System.out.println(socket.getInetAddress().getHostAddress()+"连接到服务器");InputStream in=socket.getInputStream();//读取客户端数据的读取流FileOutputStream fos=new FileOutputStream("C:\\222.txt");//写入文件的字节输出流OutputStream out=socket.getOutputStream();//发送“上传成功”的字节输出流byte[] arr=new byte[1024];//循环读取客户端写入文件int len=0;while((len=in.read(arr))!=-1){fos.write(arr,0,len);}fos.close();out.write("上传成功".getBytes());socket.close();

Client客户端:

Socket socket = new Socket("localhost", 44445);FileInputStream fis = new FileInputStream("C:\\1.txt");// 读取本地图片的字节读取流OutputStream out = socket.getOutputStream();// 给服务器端发送数据的字节输出流InputStream in = socket.getInputStream();// 读取“上传成功”的字节读取流byte[] arr = new byte[1024];// 循环读取本地文件,发送给服务器int len = 0;while ((len = fis.read(arr)) != -1) {out.write(arr, 0, len);}socket.shutdownOutput();// 向服务器写入结束标记int num = in.read(arr); // 读取“上传成功”System.out.println(new String(arr, 0, num));fis.close();socket.close();

二、UDP编程

使用UDP协议实现数据的接受和发送--DatagramSocket

服务器端

1、创建socket,监听端口

2、使用socket的接收功能接收数据

客户端

1、创建socket

2、要发送的字节数据并打包封装为数据报包

3、使用socket发送打包后的数据

Server服务器端接受数据

DatagramSocket socket=new DatagramSocket(11111);//创建socket端口,并监听端口byte[] arr=new byte[1024];//创建空的数据报包接受数据DatagramPacket packet=new DatagramPacket(arr,arr.length);socket.receive(packet);//使用socket的接受功能接受数据byte[] data=packet.getData();//获取接收到的数据String connect=new String(data,0,packet.getLength());//解码获取内容InetAddress address=packet.getAddress();String ip=address.getHostAddress();     //获取发送数据方的主机名int port=packet.getPort();              //得到发送方发送数据使用的端口System.out.println("收到了"+ip+": "+port+"内容:"+connect);socket.close();

Client客户端发送数据

DatagramSocket socket =new DatagramSocket();//创建socket端点String ss="hello 你好";byte[] data=ss.getBytes();//发送的数据//把发送的数据封装成数据包  数据,长度,主机地址,端口DatagramPacket packet=new DatagramPacket(data,data.length,InetAddress.getByName("192.168.1.101"),11111);socket.send(packet);//发送数据socket.close();


0 0
原创粉丝点击