Socket编程之TCP

来源:互联网 发布:js如何获取span的值 编辑:程序博客网 时间:2024/06/05 14:46

客户端和服务器端通信,模拟用户登录功能。

Socket的通信步骤

1,创建ServerSocketSocket

2,打开连接到Socket的输入/输出流

3,按照协议对socket就行读/写操作

4,关闭输入输出流、关闭Socket


服务器端:

1,创建ServerSocket对象,绑定监听端口

2,通过accept()方法监听客户端请求

3, 连接建立后,通过输入流读取客户端放送的请求信息

4,通过输出流向客户端发送响应信息

5,关闭相关资源


客户端:

1,创建Socket对象,指明需要连接的服务器的地址和端口号

2,连接建立后,通过输出流向服务器端发送请求信息

3,通过输入流获取服务器响应的信息

4,关闭响应资源



服务器端代码:

public class Server {
private static String username = "bl";
private static String pwd ="1";


public static void main(String[] args) throws IOException {
//1,创建ServerSocket,指定端口并监听此端口
ServerSocket serverSocket = new ServerSocket(10086);
//2,调用accept方法开始监听,等待客户端的连接
Socket socket = serverSocket.accept();
//3,获取输入流,并读取客户端信息
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info = null;
info = br.readLine();
// while((info = br.readLine())!=null){
System.out.println("我是服务器,客户端信息:"+info);
// }
socket.shutdownInput();//关闭输入流
//4,获取输出流,响应客户端的请求
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
if(info.equals(username+" "+pwd)){
pw.write(username + "恭喜你登录成功!");
}else{
pw.write("用户名或密码错误!");
}
// pw.write("欢迎您!");
pw.flush();

//5,关闭资源
pw.close();
os.close();
br.close();
isr.close();
is.close();
socket.close();
serverSocket.close();
}


}


客户端代码:

public class client {
public static void main(String[] args) throws UnknownHostException, IOException {
//1,创建客户端Socket,指定服务器地址和端口
Socket socket = new Socket("localhost", 10086);
//2,获取输出流,向服务器端发送信息
OutputStream os = socket.getOutputStream();//字节输出流
PrintWriter pw = new PrintWriter(os);//将输出流包装成打印流
Scanner input = new Scanner(System.in);
String userName =null;
String pwd = null;
System.out.print("请输入用户:");
userName = input.next();
System.out.print("请输入密码:");
pwd = input.next();
pw.write(userName+" "+pwd);
pw.flush();
socket.shutdownOutput();
//3,获取输入流,并读取服务器的响应信息
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String info = null;
while((info=br.readLine())!=null){
System.out.println("我是客户端,服务器说:"+info);
}

//4、关闭资源
br.close();
is.close();
pw.close();
   os.close();
   socket.close();
   input.close();
}
}


参考博客:http://developer.51cto.com/art/201509/490775.htm#topx


1 0