Java中的服务器与客户端的简单连接
Java中重点之一就是服务器与客户端的连接,因为是在同一台PC上,所以就设置服务器的地址为“localhost”,注意,我当时试着设置其他名称,但都不行,这个原因还请老司机告一下。另外还要注意,服务端先于客户端运行,废话不多说,上代码了
package com.myinfo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
	private static Socket accept;
	/**
	 * 服务器端的应用
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			// 1.创建Server服务器端的连接,并指定监听端口号
			ServerSocket server = new ServerSocket(8008);
			// 2.建立accept()连接
			System.out.println("服务器即将连接,等待客户端");
			Socket socket = server.accept();
			// 获取客户端输入流
			InputStream is = socket.getInputStream();
			// 转换成字符流
			InputStreamReader isr = new InputStreamReader(is);
			// 添加缓冲流
			BufferedReader br = new BufferedReader(isr);
		
			String data = null;
			while ((data = br.readLine()) != null) {
				// 循环读取
				System.out.println("我是服务器端,客户端说:" + data);
			}
              socket.shutdownInput();//关闭输入流
			//注意,此时应先关闭输入流之后才能获取输出流
			// 获取服务器端的输出流,响应客户端
			OutputStream os = socket.getOutputStream();
			PrintWriter pw = new PrintWriter(os); // 包装流
			pw.write("你好,客户端");
            pw.flush();
           
            
            
			// 关闭可关闭的资源
			os.close();
			pw.close();
			
			is.close();
			isr.close();
			br.close();
			server.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
接下来看客户端
package com.myinfo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
	/**
	 * 客户端
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			// 1.建立客户端,输入服务器的地址以及端口
			Socket socket = new Socket("localhost", 8008);
			// 获取输出流,向服务器打印信息
			OutputStream os = socket.getOutputStream();
			// 包装成打印流
			PrintWriter pw = new PrintWriter(os);
			pw.write("用户名:Admin 密码:ck");
			pw.flush();
			socket.shutdownOutput(); //关闭输出流
			//此时应该先关闭输出流然后在开启输入流
			// 获取客户端的输入流
			InputStream is = socket.getInputStream();
			// 转换成字符流
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader rd = new BufferedReader(isr); // 转换成缓冲流
			
			String data = null;
			while ((data = rd.readLine()) != null) {
				// 循环读取
				System.out.println("我是客户端,服务器端说:" + data);
			}
			// 关闭可关闭的资源
			rd.close();
			is.close();
			isr.close();
			pw.close();
			
			os.close();
			pw.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
小白一枚,不足之处,望请指正

                
            
        
浙公网安备 33010602011771号