package com.imooc.tcpsocket;
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) throws IOException {
//服务端接收客户端发送的数据,并打印在控制台上。
//1。创建服务端socket服务。通过ServerSocket对象
//2.服务端必须对外提供一个端口,否则客户端无法连接。
ServerSocket ss=new ServerSocket(10002);
//3.获取连接过来的客户端对象。
Socket s=ss.accept();//阻塞式
String ip=s.getInetAddress().getHostAddress();
//4.通过客户端对象获取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);
//5.关闭资源。关客户端,关服务端(服务端一般不关闭)
s.close();
ss.close();
}
}
package com.imooc.tcpsocket;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPClient {
public static void main(String[] args) throws IOException {
System.out.println(InetAddress.getLocalHost().getHostAddress());
//TCP传输,客户端建立过程
//1.创建tcp客户端socket服务,使用socket对象。
//建议该对象一创建就明确目的地。要连接的主机。
Socket socket=new Socket(InetAddress.getLocalHost().getHostAddress(), 10002);
//2.如果连接建立成功,说明数据通道已建立。
//该通道是socket流,是底层建立好的,既然是流,说明既有输入,又有输出。
//想要输入或输出流对象,可以找socket来获取。
//可以通过getOutputStream()和getInputStream()来获取2个字节流
OutputStream out=socket.getOutputStream();
//3.使用输出流,将数据写出。
out.write("hello,again!!!~".getBytes());
//4.关闭资源
socket.close();
}
}
添加回答
举报
0/150
提交
取消