63 网络编程——TCP编程

Posted scorpicat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了63 网络编程——TCP编程相关的知识,希望对你有一定的参考价值。

TCP编程

TCP编程是面向连接的数据传输,所以需要时用IO流来建立连接。

用户输出流到服务器,服务器输入流接收数据。

服务器输出流到用户,用户输入流接收。

基本流程

服务器端

  • 创建服务器端:ServerScoekt 对象
  • 阻塞时监听用户接入:accep() 返回Socket对象
  • 建立连接:与返回的Socket对象建立IO流,getInputStream()方法与getOutputStream方法
  • 处理数据
  • 关闭流,关闭Socket对象,关闭服务器(一般不关服务器)

用户端

  • 创建Socket对象:Socket(targetHost,targetPort)
  • 建立连接:创建输出流
  • 传输数据:输入流写
  • 关闭流
  • 关闭Socket对象

基础版本示例

服务器端

package _20191218;

import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 通过tcp传输数据的服务端,实现的是服务器端
 * @author TEDU
 *
 */
public class TCPServer {
	public static void main(String[] args) throws IOException {
		System.out.println("-----server------");
		//建立服务器
		ServerSocket server = new ServerSocket(6677);
		//阻塞式接收Socket
		Socket client = server.accept();
		//建立连接
		DataInputStream dis = new DataInputStream(client.getInputStream());//选择需要的合适的流,不需要如本文的流
		//接收数据并处理
		Object obj1 = dis.readUTF();
		Object obj2 = dis.readInt();
		Object obj3 = dis.readFloat();
		System.out.println(obj1);
		System.out.println(obj2);
		System.out.println(obj3);
		//关闭流及服务器
		dis.close();
		client.close();
		//server.close()//服务器无需关闭
	}
}

  

用户端

package _20191218;

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class TCPClient {
	public static void main(String[] args) throws UnknownHostException, IOException {
		System.out.println("-----client------");
		//新建客户端Socket
		Socket client = new Socket("localhost",6677);
		//建立连接
		DataOutputStream dos = new DataOutputStream(client.getOutputStream());
		//发送数据
		String str = "fuck";
		dos.writeUTF(str);
		dos.writeInt(89);
		dos.writeFloat(213.4f);
		//关闭流和连接
		dos.close();
		client.close();
	}
}

  

测试结果

技术图片

模拟登陆服务器

以上是关于63 网络编程——TCP编程的主要内容,如果未能解决你的问题,请参考以下文章

网络编程

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

使用 Pygments 检测代码片段的编程语言

面向面试编程代码片段之GC

如何在 Django Summernote 中显示编程片段的代码块?