一、Socket同信
基于TCP协议实现网络通信的类
1、客户端的Socket类
服务端:
基于TCP协议实现网络通信的类
1、客户端的Socket类
2、服务端的ServerSocket
二、通信模型
三、实例
客户端:
package com.socket;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import org.omg.CORBA.portable.OutputStream;
/*
* 客户端
* 服务器端要先驱动
* */
public class Click {
public static void main(String[] args) {
//创建客户端Socket,指定服务器地址和端口
try {
Socket socket = new Socket("localhost",8888);
java.io.OutputStream os = socket.getOutputStream();//字节流输出
PrintWriter pw = new PrintWriter(os);//将输出流包装为打印
pw.write("用户名:admin,密码:123");
pw.flush();
socket.isOutputShutdown();
//关闭
pw.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//获取输出流,向服务器端发送信息
}
}
服务端:
package com.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import org.omg.CORBA.portable.InputStream;
/*
* 服务器
* */
public class Server {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//创建一个服务器Socket,即ServerSocket,指定绑定端口,并监听此端口
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("***服务器即将启动,等待客户的链接***");
//调用accepy方法开始监听,等待客户的链接
Socket socket = serverSocket.accept();
//获取输入流,并读取客户信息
java.io.InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);//将字节流转换成字符流
BufferedReader br = new BufferedReader(isr);
String info = null;
while ((info=br.readLine())!=null){
System.out.println("客户端说:"+info);
}
socket.shutdownInput();
is.close();
isr.close();
br.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}