练习一、上节课补充,输出客户的ip地址
Server:
import java.net.*;
import java.io.IOException;
public class Server{
private ServerSocket serverSocket;
public Server(){
try{
serverSocket=new ServerSocket(1056);//1056代表计算机的端口号,意味着这个服务器是在本机的1056端口提供服务
System.out.println("server started......");
Socket client=serverSocket.accept();
//监听客户端的连接。如果没有监听到客户端的连接,这个方法会暂停在这里,只有监听到客户端的连接,这个accept方法才会执行完毕
System.out.println("有客户连接上服务器,客户的ip地址是"+client.getLocalAddress().getHostAddress());
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args){
new Server();
}
}
Client:
import java.net.*;
import java.io.IOException;
public class Client{
private Socket clientSocket;
public Client(){
try{
clientSocket=new Socket("127.0.0.1",1056);
//因为服务器就在本机,所以ip地址是127.0.0.1,端口号是1056;如果这句话成功执行,就意味着已经连到了服务器
System.out.println("客户端连接上服务器了");
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args){
new Client();
}
}
练习二、信息的发送与接受(客户端写的时候,服务器读;客户端读,服务器写;这必须是一来一回的。如果客户端与服务器端同时读或写时,通道被占用,就会出问题)
Server:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private ServerSocket serverSocket;
public Server(){
try{
serverSocket=new ServerSocket(1056);//1056代表计算机的端口号,意味着这个服务器是在本机的1056端口提供服务
System.out.println("server started......");
Socket client=serverSocket.accept();
//监听客户端的连接。如果没有监听到客户端的连接,这个方法会暂停在这里,只有监听到客户端的连接,这个accept方法才会执行完毕
System.out.println("有客户连接上服务器,客户的ip地址是"+client.getLocalAddress().getHostAddress());
//2.接收客户端发过来的信息
InputStream is=client.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info=br.readLine();
System.out.println("客户端发送过来的消息是"+info);
//3.服务器向客户端发送信息:i accept your information
OutputStream os=client.getOutputStream();
PrintStream ps=new PrintStream(os);
ps.println("i accept your information");
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args){
new Server();
}
}
Client:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
public class Client {
private Socket clientSocket;
public Client(){
try{
clientSocket=new Socket("127.0.0.1",1056);
//因为服务器就在本机,所以ip地址是127.0.0.1,端口号是1056;如果这句话成功执行,就意味着已经连到了服务器
System.out.println("客户端连接上服务器了");
//1.客户端向服务器发送信息:hello,Server
OutputStream os=clientSocket.getOutputStream();
PrintStream ps= new PrintStream(os);
ps.println("hello server");
//4.客户端接收服务器端接收的信息
InputStream is=clientSocket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info=br.readLine();
System.out.println("服务器发送过来的消息是"+info);
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args){
new Client();
}
}