TCP客户端和服务端通信
额外工具:TCP调试助手。
先进入cmd命令符查询自己的电脑IP。
客户端代码:
package network;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
//1、创建Socket服务,指定连接的地址和端口号,创建成功将发出连接请求
Socket s = new Socket("192.168.1.111",20000);
//2、连接成功后,将形成数据通道,即输入和输出IO流,可以通过getInpuStream()和getOutputStream()方法获取IO流对象。
OutputStream out = s.getOutputStream();
//3、获取IO对象以后,就可以通过操作IO流来对数据进行读写。
out.write("Hello,TCPServer!".getBytes());
//4.关闭流
s.close();
}
}
服务器端代码:
package network;
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 ss = new ServerSocket(30000);
//2、调用accept()方法来侦听端口号是否有连接请求,有,则返回一个socket对象,该socket将会与客户端的socket形成数据通道;如果没有,则该方法一直处于阻塞状态。
Socket s = ss.accept();
//3、有了与客户端连接的socket,同样我们可以返回输入和输出流,而客户端socket服务的输出流对应是服务端socket对象的输入流。
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
s.close();
ss.close();
//4.关闭socket流
}
}
这样就能做些简单的实验,进行tcp编程。