java入门 -- 网路编程+TCP通信示例

/*

* TCP协议

* TCP与UDP协议的区别:

* UDP;

* 1. 将数据封装为数据包,面向无连接;

* 2. 每个数据包大小为64k;

* 3. 因为无连接,所有不可靠:

* 4. 因为不需要建立连接,所有速度快:

* 5. UDP通信是部分服务端和客户端的,只分发送与接收端:

*

* TCP:

*1. TCP是基于I/O流进行数据的传输,是面向连接的(首先要建立连接才能进行通信);

*2. TCP进行数据传输没有数据大小限制;

*3. 面向连接,通过3次捂手的机制保障数据的完整性,是一个可靠的协议;

*4. tcp是面向连接的所以慢;

*5. 严格区分客户端和服务端;

*

*TCP的Socket类

*Socket 客户端类

*说明:TCP的客户端一旦启动,马上会与服务端建立连接

*ServerSocket 服务端类

*

*TCP的客户端使用步骤:

*1. 建立TCP的客户端服务

*2. 获取对应的流对象;

*3. 玲输出流输出数据:

*4. 关闭资源;

*

*TCP服务端的使用步骤:

* 1. 建立TCP的服务端;

* 2. 接收客户端的请求产生一个Scoket:

* 2. 获取对应的对象获取到输入流:

* 4.使用输入流输出数据;

*/

package com.lin.michael;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.InetAddress;

import java.net.Socket;

import java.net.UnknownHostException;

//客户端

public class Demo06 {

public static void main(String[] args) throws UnknownHostException, IOException{

//1.建立tcp的服务

Socket socket = new Socket(InetAddress.getLocalHost(), 9090);

//2.获取到Socket输出流对象

OutputStream outputStream = socket.getOutputStream();

//3.利用输出流输出数据

outputStream.write("你好,吃饭了吗".getBytes());

//接收来自服务端的数据

InputStream inputStream = socket.getInputStream();

byte[] buf = new byte[1024];

int length = 0;

length = inputStream.read(buf);

System.out.println("客户端接收的数据:" + new String(buf, 0, length));

//4.关闭资源

//outputStream.close();s

socket.close();

}

}


===============================================


/*

* 服务端socket

*

*/

package com.lin.michael;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

//服务端

public class Demo07 {

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

//1.建立tcp的服务端

ServerSocket serverSocket = new ServerSocket(9090);

//2. 调用ServerSocket对象的accept()的作用是接收连接,也是一个是阻塞型的方法,接收可短的连接,没有客户端请求的连接的时候会一直等下去,获取到一个Sokcet对象

Socket socket = serverSocket.accept();

//3. 从socket总获取输入流,输出数据

InputStream inputStream = socket.getInputStream();

byte[] buf = new byte[1024];

int length = 0;

length = inputStream.read(buf);

System.out.println("服务端接收的数据:" + new String(buf, 0, length));

//获取Socket的输入流对象,向客户端发送数据

OutputStream outputStream = socket.getOutputStream();

outputStream.write("客户端你好啊".getBytes());

//关闭资源

serverSocket.close();

}

}

你可能感兴趣的:(java入门 -- 网路编程+TCP通信示例)