Socket通信类行
Socket通信步骤:
1.建立服务端ServerSocket和客户端Socket
2.打开连接到Socket的输出输入流
3.按照协议进行读写操作
4.关闭相对应的资源
类 ServerSocket 对应的一些方法
类 Socket对应的方法
代码实现
package Day13_1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 客户端和服务器端都可以随意的发送文件
* 从终端输入
*
* 客户端:
* 接收终端的输入 将终端的输入发送给服务器端
* 接收服务器端发送来的数据
* 服务器端:
* 接收终端的输入 将终端的输入发送给客户端
* 接收客户端发送来的数据
*
* 对聊
*
* 客户端:
* 主线程: 接收终端的输入 将终端的输入发送给服务器端
* 子线程: 接收服务器端发送来的数据
* 服务器端:
* 主线程: 接收终端的输入 将终端的输入发送给客户端
* 子线程: 接收客户端发送来的数据
*
*/
public class MYcass
{
}
class Client
{
public static void main(String[] args) throws IOException {
Socket socket=new Socket("10.129.32.34",10000);
//用一个子线程处理服务器端的数据
new Thread(new ClientThread(socket)).start();
BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
PrintStream ps=new PrintStream(socket.getOutputStream());
String line=null;
while ((line = keyin.readLine())!=null)
{
ps.print(line);
}
//用一个子线程处理服务器端的数据
new Thread(new ClientThread(socket)).start();
}
}
/**
*
* 客户端子线程创建
*/
class ClientThread implements Runnable
{
private Socket socket;
//保存Socket对象
public ClientThread( Socket socket)
{
this.socket=socket;
}
@Override
public void run() {
BufferedReader br=null;
try {
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//读取数据
String line=null;
while ((line = br.readLine())!=null)
{
System.out.print(line);
}
} catch (IOException e) {
System.out.print("出错");
System.exit(-1);
}finally {
try {
if (br !=null)
{
br.close();
}
if (socket !=null)
{
socket.close();
}
} catch (IOException e) {
// e.printStackTrace();
}
}
}
}
/**
*
* 创建一个子线程处理客户端传来的数据
*
*/
class ServerThread extends Thread
{
private Socket socket;
public ServerThread(Socket socket)
{
this.socket=socket;
}
@Override
public void run() {
BufferedReader br=null;
try {
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line=null;
while ((line = br.readLine())!=null)
{
System.out.println(line);
}
} catch (IOException e) {
//e.printStackTrace();
System.out.println("网络异常");
System.exit(-1);
}finally {
try {
if (br !=null) {
br.close();
}
if (socket != null)
socket.close();
} catch (IOException e) {
// e.printStackTrace();
}
}
super.run();
}
}
class Server
{
public static void main(String[] args) throws IOException {
ServerSocket ss=new ServerSocket(10000);
//获取客户端的socket
Socket socket=ss.accept();
//创建一个子线程处理客户端传来的数据
new ServerThread(socket).start();
//终端输入流对象
BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
//客户端的输出流对象
PrintStream ps=new PrintStream(socket.getOutputStream());
//读取终端的输入 将输入输出给客户端
String line=null;
while ((line = keyin.readLine())!=null)
{
ps.print(line);
}
}
}
/**
* 1.群聊
* 2.私聊
* 3.取名字
*
*
*
*/