演示tcp传输
1.tcp分客户端和服务端
2.客户端对应对象是Socket
服务端对应对象是ServerSocket
客户端:
查阅Socket对象,发现该对象建立时,就可以去连接指定主机
因为tcp面向连接,所有建立Socket服务时
就要有服务器端存在,并连接成功形成通路,在该通道上进行数据传输
步骤:
1.创建Socket服务,并指定要连接的主机和端口
2.为了发送数据,应该获取socket流中的输出流
3.
步骤:
1.建立服务端ServerSocket服务,并监听一个端口
2.获取连接过来的客户端对象
通过ServerSocket的accept方法,没有连接就会等,这个方法是阻塞式的
3.客户端发过来数据,那么客户端使用对应的客户端对象
并获取到该客户端对象的读取流来读取发过来的数据,打印到控制台
4.关闭服务端(可选)
客户端java代码
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("10.167.222.21", 10086);
OutputStream out = socket.getOutputStream();
out.write("shanshanbox".getBytes());
out.flush();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
服务器端java代码
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer {
public static void main(String[] args) {
ServerSocket serverSocket;
try {
serverSocket = new ServerSocket(10086);
Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
byte[] buf = new byte[1024];
//注意此处的读取buf参数
int len = in.read(buf);
System.out.println(len);
System.out.println(new String(buf, 0, len));
socket.close();
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}