创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。
这里我们先写服务器端
package tcp;
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 {
/*
创建tcp服务端
思路:
1.创建tcp服务器端服务,服务器端为了让客户端可以连接上,必须提供端口,监听一个端口
2.获取客户端对象,通过客户端的socket流和对i赢得客户端进行通信
3.获取客户端的socket流的读取流
4.读取数据并显示在服务端
5.关闭资源
*/
System.out.println("服务器端启动。。。");
//1
ServerSocket ss=new ServerSocket(10003);
//2
Socket s=ss.accept();
String ip=ss.getInetAddress().getHostAddress();
System.out.println(ip+"...connected");
//3
InputStream in=s.getInputStream();
//4
byte[] buf=new byte[1024];
int len=in.read(buf);
String str=new String(buf,0,len);
System.out.println(str);
//5
s.close();
ss.close();
}
}
然后是客户端
package tcp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class TcpClient {
public static void main(String[] args) throws IOException {
/*
* 思路:
* 1.建立tcp客户端服务。
* 1.1因为是面向连接,必须有连接才可以进行通信
* 1.2在创建客户端是,就必须明确目的地址和端口
* 2.一旦连接建立,就有了传输数据的通道。就可以在通道中进行数据传输。
* 这个传输其实就是通过流实现的。就是socket io流
* 3.获取socket io中的写动作,将数据写到socket流中发给分服务端
* 4.关闭资源
*/
System.out.println("客户端启动。。。");
//1
Socket s = new Socket("192.168.89.232", 10003);
//2
OutputStream out = s.getOutputStream();
//3
out.write("注意,tcp客户端来了。。".getBytes());
//4
s.close();
}
}