您的位置:首页 > 编程语言 > Java开发

【Java】SingleTalkClient代码理解与学习笔记

2017-03-15 20:19 393 查看
本次学习聊天器的客户端代码,有了上一次的基础,这一次的学习会变得很快。

下面是完整代码:

import java.io.*;
import java.net.*;

public class SingleTalkClient {
public static void main(String[] args) throws IOException
{

Socket client = null;
PrintWriter out = null;
BufferedReader in = null;

try {
client = new Socket("127.0.0.1", 4444);
out = new PrintWriter(client.getOutputStream(), true); //auto flush
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: 127.0.0.1.");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: 127.0.0.1.");
System.exit(1);
}

//从标准输入流(键盘)中获取信息
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));

String fromServer, fromUser;
boolean sbye = false;
boolean ubye = false;

System.out.print("Client input:");
fromUser = stdIn.readLine();
while( true )
{
if( ubye == false )
{
out.println(fromUser);
out.flush();
//System.out.println("Client: " + fromUser);
if (fromUser.equals("Bye."))
ubye = true;
}

if( sbye == false )
{
fromServer = in.readLine();
System.out.println("from Server: " + fromServer);
if (fromServer.equals("Bye."))
sbye = true;
}

if( ubye == false )
{
System.out.print("Client input:");
fromUser = stdIn.readLine();
}

if( ubye == true && sbye == true )
break;
}

out.close();
in.close();
stdIn.close();
client.close();
}
}

代码一开始声明了Socket、PrintWriter和BufferedReader的对象。
用给定的IP:127.0.0.1以及4444端口来对client进行初始化。

接着是抛出异常:1. 找不到指定IP;2. 无法连接到指定IP。

下面的从标准输入流获取信息的代码和服务器端的完全一样,故不赘述。

接下来就是代码的实际执行阶段:

首先运行服务器端,若运行成功,则不会有任何显式结果来提示;若服务器连接失败,则控制台会弹出跟异常有关的信息,这时候你就要来检查自己机器上的4444端口是否被占用,有关端口的知识在其他大牛的博客上都有介绍,本篇便不再解释。

下面来运行你的客户端,若运行成功,则控制台会显示输入提示符:



在“:”后面输入字符串,按回车键发送。如果服务器端接收成功,则控制台会弹出“Accept OK!”

最后简单使用一下该聊天器:



在双端都输入“Bye.”之后,程序结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 服务器