java简单聊天小程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
网络编程java简单聊天小程序[下次修改成多线程的,这个必须等待对方输入结束,有机会修改成可视化窗口]
By 刘汪洋
写入正确的ip地址即可正常用当然目前只停留在命令行界面
还没有写成可视化窗口界面
运行时请带上参数
如java TransServer 张三
Java TransClient 李四
( 和刘正南在局域网试验的截图成功
这是修改后的
加上了姓名!
)
(修改前的截图)
代码:
客户端:
package com.baidu.chat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; import java.io.PrintWriter;
import .Socket;
import .UnknownHostException;
// 简单聊天小程序客户端
public class TransClient {
public static void main(String[] args)
{
if(args[0]==null)
args[0] = "他";
startClient(args[0]);
}
private static void startClient(String name)
{
Socket sk = null;
BufferedReader bufr = null;
try {
sk = new Socket("127.0.0.1",10000);// 1 创建 socket服务
bufr = new BufferedReader(new InputStreamReader(System.in));// 2 获取录入键盘
PrintWriter out = new PrintWriter(sk.getOutputStream(),true);// 3 获取输出流true表示自动刷新
BufferedReader bufIn = new BufferedReader(new
InputStreamReader(sk.getInputStream()));// 4 获取输入流
// 5 发送获取
String text_send = "";
String text_get = "";
String ServerName = "";
System.out.print("聊天已开启..."+"\r\n"+"我说:");
out.println(name);//第一次将自己姓名发给 ServerName = bufIn.readLine();
while((text_send= bufr.readLine())!=null)
{
out.println(text_send);//将我说的话发给服务端
text_get = bufIn.readLine();//读取服务端发来的文本 System.out.println(text_get);
if(text_send.equals("886"))
{
sk.shutdownInput();
break;
} else if (text_get.equals(ServerName+"说:886")) {
break;
}else{
System.out.print("我说:");
}
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
bufr.close();
sk.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
服务端
package com.baidu.chat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; import java.io.PrintWriter;
import .ServerSocket;
import .Socket;
import java.util.Scanner;
//简单聊天小程序服务端
public class TransServer {
public static void main(String[] args)
{
startServer(args[0]);
}
private static void startServer(String serverName)
{
ServerSocket ss = null;
Socket sk =null;
Scanner in = null;
try {
ss = new ServerSocket (10000);// 创建服务端
System.out.println("Server started");
sk = ss.accept();// 获取客户端socket
BufferedReader bufIn = new BufferedReader(new
InputStreamReader(sk.getInputStream()));//获取客户端输入流
PrintWriter bufOut = new PrintWriter(sk.getOutputStream(),true);//获取客户端输出流
in = new Scanner(System.in);
String ip = "";
ip = sk.getInetAddress().getHostAddress();
System.out.println(ip+"is connecting");
String text_get = "";//获取的字符串
String text_send = "";//返回的字符串
String userName = "";
userName =bufIn.readLine();
bufOut.println(serverName);
while((text_get = bufIn.readLine())!= null)
{
System.out.println(userName+"说:"+text_get);// 获取客户端发来的文本输出到控制台上