服务端:
package cn.itcast.tcp.demo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务端接收客户端发送来的数据,并打印带控制台上
*
* 建立TCP连接思路:
*
* 1、首先建立服务端服务,通过ServeSocket对象
*
* 2、客户端必须对外提供一个端口,否则无法连接
*
* 3、服务端获取客户端的对象
*
* 4、通过客户端对象获取Socket流,并把数据打印在控制台上
*
* 5、关闭流,客户端的和服务端的。
*
* */
public class ServeDemo {
public static void main(String[] args) throws IOException {
// 1、首先建立服务端服务,通过ServerSocket对象
ServerSocket ss=new ServerSocket(10012);
// 2、服务端获取客户端的对象
Socket s=ss.accept();//阻塞式的方法
String ip=s.getInetAddress().getHostAddress();
// 3、通过客户端对象获取Socket流,并把数据打印在控制台上
InputStream is=s.getInputStream();
byte[]buff=new byte[1024];
int len=is.read(buff);
String txt=new String(buff, 0, len);
// 4、打印数据
System.out.println(ip+"::::"+txt);
// 5、给客户端回复数据,通过客户端的socket流的outputstream流
OutputStream os=s.getOutputStream();
// 6、给客户端写入数据
os.write("我知道了".getBytes());
// 7、关闭资源
s.close();
ss.close();
}
}
客户端:
package cn.itcast.tcp.demo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* Tcp传输客户端床垫过程
*
* 1、建立Tcp的Socket服务,使用的是Socket对象,建议一开始就明确目的地,要连接的主机;
*
* 2、如果建立成功,说明数据已经连上。
* 该通道是Socket流,是底层建立好的,可以通过Socket对象获取输入和输出流对象。
* 通过getoutputstream()和getinputstream()来获取。
*
* 3、将数据通过流对象发送出去;
*
* 4、关闭socket流。
*
* */
public class ClientDemo {
public static void main(String[] args) throws UnknownHostException, IOException {
// 1、建立socket服务
Socket st=new Socket("192.168.1.216",10012);
// 2、获取输出流
OutputStream os=st.getOutputStream();
// 3、将数据写到流上
os.write("tcp客户端:我来了!!!".getBytes());
// 4、读取服务端发过来的数据
InputStream is=st.getInputStream();
// 5、将数据保存下来
byte[]buff=new byte[1024];
int len=is.read(buff);
String txt=new String(buff, 0, len);
// 6、将数据打印
System.out.println(txt);
// 4、关闭流
st.close();
}
}