TCP 客户端和服务端交互简单例子

//客户端

package com.lxb.test;


import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;


public class TCPClientDemo2 {


public static void main(String[] args) throws UnknownHostException, IOException {
// 客户端发数据到服务端


/*
* TCP传输客户端建立过程
* 1:创建TCP客户端socket服务,使用的是Socket对象
* 建议该对象一创建就明确目的地,要连接的主机
* 2:如果连接建立成功,说明数据传输通道已建立
* 该通道就是socket流,是底层建立好的,既然是流,说明这里既有输入又有输出
* 想要输入或者输出对象,可以找socket来获取
* 可以通过getOutputStream和getInputStream获取两个字节流
* 3:使用输出流,将数据写出
* 4:关闭资源
*/

//创建客户端socket服务
Socket socket=new Socket("192.168.174.1", 10002);

//获取socket流中的输出流
OutputStream out=socket.getOutputStream();

//使用输出流将指定的数据写出去
out.write("TCP演示,哥们又来了。。。".getBytes());

//读取服务端返回的数据,使用socket读取流
InputStream in=socket.getInputStream();
byte[] buf=new byte[1024];
int len=in.read(buf);
String text=new String(buf,0,len);
System.out.println(text);

//关闭资源
socket.close();

}


}

//服务端

package com.lxb.test;


import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;


public class TCPServerDemo2 {


public static void main(String[] args) throws IOException {
// 服务端接收客户端发送过来的数据,并打印在控制台上
/*
* 创建TCP服务端思路
* 1:创建服务端socket服务,通过serverSocket对象
* 2:服务端必须对外提供一个端口,否则客户端无法连接
* 3:获取连接过来的客户端对象
* 4:通过客户端对象获取socket流读取客户端发来的数据
* 5:关闭资源。关客户端,服务端
*/
//创建服务端对象
ServerSocket ss=new ServerSocket(10002);
//获取连接过来的客户端对象
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
//通过socket对象获取输入流,要读取客户端发来的数据
InputStream in=s.getInputStream();
byte[] buf=new byte[1024];
int len=in.read(buf);
String text=new String(buf,0,len);
System.out.println(ip+":"+text);

//使用客户端socket对象的输出流给客户端返回数据
OutputStream out=s.getOutputStream();
out.write("收到".getBytes());

s.close();
ss.close();

}


}


你可能感兴趣的:(TCP 客户端和服务端交互简单例子)