实现socket编程需要有客户端(client)及服务端(server)
客户端
public class Client {
public static void main(String[] args) {
Socket socket = null;
OutputStream os = null;
OutputStreamWriter osw = null;
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br =null;
try {
//创建客户端对象,设置发送地址
socket = new Socket("172.16.4.110",12345);
//从控制台输入要发送的内容
Scanner sc = new Scanner(System.in);
String scan = sc.nextLine();
//将发送的内容通过输出流的形式进行写操作,需要从socket中获取流对象
os = socket.getOutputStream();
//将字节流转换为字符流
osw = new OutputStreamWriter(os);
//进行写操作
osw.write(scan);
//刷新流
osw.flush();
socket.shutdownOutput();
is = socket.getInputStream();
//3.1将字节流转换为字符流进行读的操作
isr = new InputStreamReader(is);
//3.2使用字符缓冲流处理读取重复的问题
br = new BufferedReader(isr);
String bread = null;
while((bread = br.readLine())!=null) {
System.out.println(bread);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(br!=null) {
br.close();
}
if(isr!=null) {
isr.close();
}
if(is!=null) {
is.close();
}
if(osw!=null){
osw.close();
}
if(os!=null) {
os.close();
}
if(socket!=null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务端
/**
* 1、监听需要接收那些客户端的信息(通过端口号监听)
* 2、接收客户端发送过来的信息
* 3、给客户端返回信息
*/
public class Server {
public static void main(String[] args) {
ServerSocket serversocket = null;
Socket socket = null;
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br =null;
OutputStream os = null;
OutputStreamWriter osw = null;
try {
//1、创建服务端的socket对象
serversocket = new ServerSocket(8765);
//2、监听对应端口下的所有应用
socket = serversocket.accept();
//3、获取客户端发来的消息
is = socket.getInputStream();
//3.1将字节流转换为字符流进行读的操作
isr = new InputStreamReader(is);
//3.2使用字符缓冲流处理读取重复的问题
br = new BufferedReader(isr);
String bread = null;
while((bread = br.readLine())!=null) {
System.out.println(bread);
}
//4 从Socket中获取输入流
os = socket.getOutputStream();
//将字节流转换为字符流
osw = new OutputStreamWriter(os);
osw.write("已接受dao信息");
osw.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(osw!=null) {
osw.close();
}
if(os!=null) {
os.close();
}
if(br!=null) {
br.close();
}
if(isr!=null) {
isr.close();
}
if(is!=null) {
is.close();
}
if(socket!=null) {
socket.close();
}
if(serversocket!=null) {
serversocket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}