基于JAVA网络编程的聊天小程序
package com.neusoft.edu.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务器端代码
* 获取客户端发送的信息,显示并且返回对应的回复
* 1、创建ServerSocket对象
* 2、调用accept方法获取客户端连接
* 3、使用输入流读取客户端发送的数据
* 4、使用输出流向客户端写入数据
* 5、关闭对应的对象
* @author L
*
*/
public class ChatServer {
/**
* @param args
*/
public static void main(String[] args) {
try {
//1、创建ServerSocket对象,8875为自定义端口号
ServerSocket server = new ServerSocket(8857); //简单提示
System.out.println("等待客户端连接……"); //2、获取客户端连接
Socket client = server.accept(); //获取客户端的相关信息
System.out.println(client.getInetAddress().getHostAddress() + "连接上来了……"); //3.1、定义输入流和输出流对象
BufferedReader in = new BufferedReader(
new InputStreamReader(
client.getInputStream())); //用来获取从控制台输入的数据,将该数据发送给客户端
BufferedReader inByServer = new BufferedReader(
new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(client.getOutputStream(), true); //读取到的数据
String data = null;
String answer = null; //循环和客户端进行通信
do
{
//3.2、读取客户端发送的数据
data = in.readLine(); //在服务器端显示读取到的数据
System.out.println("客户端发送信息:" + data); //获取服务器端要发送给客户端的信息
System.out.print("服务器端回复客户端:");
answer = inByServer.readLine(); //3.3、将数据写入到客户端
out.println(answer);
out.flush();
}while(!"bye".equals(data)); //4、关闭相关资源
out.flush();
in.close();
inByServer.close();
out.close(); //关闭Socket对象
client.close();
server.close(); System.out.println("服务器端关闭……");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.neusoft.edu.socket; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException; /**
* 聊天客户端
* 1、创建Socket对象
* 2、写入数据
* 3、读取从服务器端发来的数据
* 4、关闭
* @author L
*
*/
public class ChatClient { /**
* @param args
*/
public static void main(String[] args) {
try {
//1、创建Socket对象,("192.168.1.107", 8857)分别为主机IP和端口号,两个类端口号要一致
Socket client = new Socket("192.168.1.107", 8857); //2.1、创建输入流和输出流对象
BufferedReader in = new BufferedReader(
new InputStreamReader(
client.getInputStream())); PrintWriter out = new PrintWriter(client.getOutputStream(), true); BufferedReader inByClient = new BufferedReader(
new InputStreamReader(System.in)); //服务器端发送的数据
String data = null;
//客户端向服务器端写入的数据
String answer = null; do
{
//2.2、客户端的读写操作
System.out.print("你说:");
//获取要发送给服务器端的数据
answer = inByClient.readLine();
//向服务器端写入数据
out.println(answer);
out.flush(); //获取服务器端发送的数据
data = in.readLine();
//输出从服务器端获取的数据
System.out.println("服务器端返回信息是:" + data);
}while(!"bye".equals(data)); //3、关闭
in.close();
out.close();
inByClient.close();
client.close(); System.out.println("客户端关闭……");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
这是个小程序,不过也包含了一些小BUG,仅供新手参考,不妥之处,还望见谅!
基于JAVA网络编程的聊天小程序的更多相关文章
- JAVA 网络编程 - 实现 群聊 程序
在实现 这个 程序之前, 我们 需要 了解 一些 关于 Java 网络 编程 的 知识. 基本 的 网络知识: 网络模型 OSI (Open System Interconnection 开放系统互连 ...
- Java网络编程案例---聊天室
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net包中JavaSE的API包含有类和接口,它们提供低层次的通信细节.你可以直接使用这些类和接口,来专注于解决 ...
- Java网络编程——UDP聊天程序
UDP简介 UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据报.在OSI模型中,UDP位于第四层--传输层,处于IP协议额上一层.UDP有不提供数据报分组.组装以及不能对数据报排序 ...
- Java网络编程--简单聊天程序
背景 毕业设计前的练手,学校小比赛中的一个题目. 开发环境 Java(eclipse)+Mysql 简介 使用Java+Mysql开发以个简单的聊天工具,在本次项目中实现了: 1. 用户登录(客户端至 ...
- 这份书单会告诉你,Java网络编程其实很重要
- Netty 聊天小程序
这节讲解基于 Netty 快速实现一个聊天小程序. 一.服务端 1. SimpleChatServerHandler(处理器类) 该类主要实现了接收来自客户端的消息并转发给其他客户端. /** * 服 ...
- Java网络编程和NIO详解9:基于NIO的网络编程框架Netty
Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introd ...
- Netty学习——基于netty实现简单的客户端聊天小程序
Netty学习——基于netty实现简单的客户端聊天小程序 效果图,聊天程序展示 (TCP编程实现) 后端代码: package com.dawa.netty.chatexample; import ...
- 用java网络编程中的TCP方式上传文本文件及出现的小问题
自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用. 首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文 ...
随机推荐
- hadoop 学习笔记 (十) mapreduce2.0
MapReduce的特色---不擅长的方面 >实时计算 像mysql一样,在毫秒级或者秒级内返回结果 >流式计算 Mapreduce的输入数据时静态的,不能动态变化 MapReduce自身 ...
- Codeforces Round #204 (Div. 2): B
很简单的一个题: 只需要将他们排一下序,然后判断一下就可以了! 代码: #include<cstdio> #include<algorithm> #define maxn 10 ...
- Shoot the Bullet
zoj3229:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3442 题意:一个摄影师,在n天内给m个女神拍照.每个女神至少要 ...
- 【HDOJ】3584 Cube
三位树状数组. /* 3584 */ #include <iostream> #include <string> #include <map> #include & ...
- C++ Prime:decltype类型指示符
decltype作用是选择并返回操作数的数据类型. decltype(f()) sum = x; // sum的类型就是函数f的返回类型 如果decltype使用的表达式是一个变量,则decltype ...
- [LeetCode#244] Shortest Word Distance II
Problem: This is a follow up of Shortest Word Distance. The only difference is now you are given the ...
- poj2954
水题,先用叉积求三角形面积然后求三边上的点(由公约数上点)a然后用pick定理S=a+b/2-1就可以求出内部的点数了 var x,y,xx,yy,a1,a2,a3,x1,x2,x3,y1,y2,y3 ...
- Java 语言中 Enum 类型的使用介绍
Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常 ...
- poj 1328 Radar Installation【贪心区间选点】
Radar Installation Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) ...
- 如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!)
豆电雨 搬砖自味精:http://awhisper.github.io/2016/03/12/滚动圆角卡顿刨根问底/ 使用Quartz2D直接绘制图片 步骤: a.创建目标大小(cropWidth, ...