/* TCP 的客户端与服务器端
客户端:
1,建立Socket连接,制定服务器端的IP地址和端口号
2,获取流中的输入和输出流对象来操作数据
3.利用write方法将数据写出
4.关闭客户端
服务器端:
1.利用serverSocket指定端口与客户端建立连接
2.获取客户端对象,accept()方法
3.利用客户端对象获取输入和输出流对象来操作数据
4.提取数据,
5,一定时间后关闭客户端,服务器端一般不需要关闭
*/
import java.io.*;
import java.net.*;
class Client{ public static void main(String [] args) throws Exception{
//建立客户端连接,指点服务器端的IP和端口号
Socket socket = new Socket("192.168.0.102",25000);
//获取服务器端的输出流对象输出数据
OutputStream outputStream = socket.getOutputStream();
//从键盘接收数据 BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String str = null;
//切记:read是阻塞式方法
while((str = bufferedReader.readLine())!=null){
byte[] buf = str.getBytes();
//写出数据
outputStream.write(buf,0,buf.length);
//outStream.flush();
}
//关闭流,关闭客户端
bufferedReader.close(); socket.close();
} }
class Server{
public static void main(String [] args) throws Exception{
//建立服务器端连接,并指定端口
ServerSocket serverSocket = new ServerSocket(25000);
//获取客户端对象,accetp是阻塞式方法
Socket socket = serverSocket.accept();
//获取客户端对象的输入流来读取数据
InputStream inputStream = socket.getInputStream();
//存放数据
byte[] buf = new byte[1024];
int len = 0;
//获取数据信息
while((len = inputStream.read(buf))!=-1){
int port = socket.getPort();
String ip = socket.getInetAddress().getHostAddress();
String data = new String(buf,0,len);
System.out.println(ip+".."+data+".."+port);
}
//关闭客户端 socket.close();
} }
黑马程序员——TCP的客户端与服务器端