Tcp编程需要编写两端代码(客户端和服务端)
服务器:接受、传递
客户端:发送和接受
简单的练习:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TestServerTcp {
public static void main(String[] args) {
ServerSocket ss = null;
try {
//创建ServerSocket 对象 ,注意 一般需要指定端口
//ip地址如果不指定则默认获取本机的IP地址
//实质是进程间的通信
ss = new ServerSocket(8888);
//也可以使用bind函数完成地址和端口绑定
//127.0.0.1 回环地址 或者写本机的主机地址
// ss.bind(new InetSocketAddress("127.0.0.1" , 9999));
//服务器等待客户端连接上来
System.out.println("服务器已启动等待连接");
Socket s = ss.accept();
System.out.println("一个客户端连接上来");
// //客户端的IP地址
// System.out.println(s.getInetAddress().getHostAddress());
// //客户端的端口
// System.out.println(s.getPort());
// //客户端的主机名称
// System.out.println(s.getInetAddress().getHostName());
//PrintWriter缓冲流 装饰流的
//在网络编程时必须加上 true参数 检测有数据传输 就自动刷新
//不手动关流 和 Socket有关 Socket关了 流也会关
PrintWriter out = new PrintWriter(s.getOutputStream() , true );
out.println("欢迎您访问服务器");
} catch (IOException e) {
e.printStackTrace();
}finally {
if(ss != null) {
try {
ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class TestClientTcp {
/**
*
* 使用Socket对象完成通信
*
*/
public static void main(String[] args) {
Socket s = null;
try {
//回环地址和端口
s = new Socket("127.0.0.1" ,8888);
//也可以使用bind函数完成地址和端口绑定
// ss.bind(new InetSocketAddress("127.0.0.1" , 8888));
System.out.println("已经连接成功");
//自己的IP地址和端口
//s = new Socket("192.168.121.1" ,8888);
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = br.readLine();
System.out.println("服务端访问....." + str);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}