服务端代码:
package com.qianfeng.ls.pm.socket2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class DemoServer {
public static void main(String[] args) {
try {
//1: 新建一个服务端对象
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("start server ... waitting....");
//2: 等待客户端连接; 开始监听
//如果有连接;将会得到客户端的连接(socket)信息
Socket server = serverSocket.accept();
//3:向客户端发送消息
OutputStream os = server.getOutputStream();
//3.1 将字节流包装成字符流进行操作;
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
//3.2 发送信息; 记得加上 \n[为了读取方便]
String msg = "hello , you ip :" + server.getInetAddress().getHostAddress() + "\n";
bw.write(msg);
bw.flush(); //不然对方接受不了 ;这里不能close
//4: 接受客户端发给我的消息
InputStream is = server.getInputStream();
//4.1将字节流转成字符流操作
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//4.2信息读取
String readLine = br.readLine();
System.out.println(readLine);
} catch (Exception e) {
e.printStackTrace();
}
}
}
客户端代码:
package com.qianfeng.ls.pm.socket2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class DemoClient {
public static void main(String[] args) {
//1:新建一个socket对象; 根据ip和端口
String ip = "127.0.0.1";
int port = 8888;
try {
Socket client = new Socket(ip, port);
//2:接受服务端发过来的消息
InputStream is = client.getInputStream();
//2.1 转成字符流
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String rl = br.readLine();
System.out.println("服务器发来的消息:" + rl);
//3:向服务端发送消息
OutputStream os = client.getOutputStream();
String msg = "hello i am client \n";// \n代表读取的时候,readline能读到
os.write(msg.getBytes());
os.flush();//如果不清空.会有问题
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}