udp协议简单实现登录功能

来源:互联网 发布:c语言vector用法 编辑:程序博客网 时间:2024/05/17 19:23

/**
* Description: 客户端

* Copyright (c) , 2016, Jansonxu

* This program is protected by copyright laws.

* Program Name:Client.java

* Date: 2016年1月28日
*
* @author 李阳
* @version : 1.0
*/
package LowerCodeForChat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
//1 构建一条客户端到网络的通路 PrintWriter
//2 构建一条网络到客户端的通路(BufferedReader)

    //3 构建客户端控制台到内存 (BufferedReader)    //4 通过循环体 模拟与服务器回话    //循环体    // 从控制台读取 要给服务器说的话    // 将信息传递给服务器    // 读取服务器的信息并显示    Socket client=null;    BufferedReader brToServer=null;    try {        client=new Socket("127.0.0.1",7777);        PrintWriter pw =new PrintWriter(client.getOutputStream(),true);        BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));        brToServer=new BufferedReader(new InputStreamReader(System.in));        while(true) {            System.out.println("客户端对服务器说");            String info=brToServer.readLine();            //System.out.println(info);            pw.println(info);            System.out.print("服务器对客户端说:");            String info1=br.readLine();            System.out.println(info1);            if("exit".equals(info1)){                break;            }        }    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }finally{        if(client!=null){            try {                client.close();            } catch (IOException e) {                e.printStackTrace();            }if(brToServer!=null){                try {                    brToServer.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    } }

}

/**
* Description: 服务器

* Copyright (c) , 2016, Jansonxu

* This program is protected by copyright laws.

* Program Name:TalkServer.java

* Date: 2016年1月28日
*
* @author 李阳
* @version : 1.0
*/
package LowerCodeForChat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class TalkServer {
public static void main(String[] args) {
ServerSocket server=null;
BufferedReader toClientReader=null;
try {
// 1 服务器实例的构建
server=new ServerSocket(7777);
//获得来自客户端的实例 的对象
Socket client=server.accept();
// 2构建网络到服务器的通过 (通过网络字节输入流 封装成 带缓存的字符输入流)
BufferedReader br=new BufferedReader(new InputStreamReader(client.getInputStream()));
// 3构建服务器端到客户端 或 网络的通路(通过网络字节输出流 封装了打印字符输出流)
PrintWriter pw=new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true);
// 4 服务器端控制台 到服务器端内存
toClientReader=new BufferedReader(new InputStreamReader(System.in));
// 5 读取客户端信息
System.out.println(“来自客户端的信息是”);
String info=br.readLine();//读取来 就是String
System.out.println(info);
System.out.println(“服务器要对客户端说”);
// 6知道服务器 exit
String info1=”“;//服务器会阻塞 读到 内存中 再给变量
while(!”exit”.equals(info1=toClientReader.readLine())){ //每次都要发过去
pw.println(info1);// 此处一定 要 println 表示服务器这句话 说完,客户端那边就嫩readline 一行的内容,否则客户端
// 来自客户端的信息是
//就会阻塞下去 因为客户端不知道你这一行 说完了吗
//服务器 读取来自客户端的话语
System.out.print(“来自客户端的信息是”);
String info2=br.readLine();//读取来 就是String
System.out.println(info2);
System.out.print(“服务器对客户端说:”);
}
pw.println(info1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(toClientReader!=null){
try {
toClientReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}if(server!=null){
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}

}

1 0
原创粉丝点击