当前位置:  编程技术>java/j2ee

java网络编程学习java聊天程序代码分享

    来源: 互联网  发布时间:2014-10-30

    本文导语:  代码如下: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;/** * 服务器端代码 * 获取客户端发送的信息,显示并且返回对...

代码如下:

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();
        }
    }

}


    
 
 

您可能感兴趣的文章:

  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 用java做网络编程和用c做网络编程有啥区别
  • 电力翻译的o'reilly的Java网络编程(Java network programming)怎样?
  • Java 网络编程有些什么内容?
  • java的网络编程
  • 怎样学习JAVA网络编程?
  • 寻找<<java2图形设计卷2SWING>>一书源代码和<<java网络高级编程>>一书源代码
  • 学习JAVA网络编程需要那些硬件设备?
  • JAVA网络编程(socket),用什么工具开发?怎么配置环境?
  • 怎么样利用Socket进行Java网络编程
  • 初学java网络编程的问题
  • 谁能介绍几个关于java网络编程的网站
  • 求O'Reilly《Java网络编程》中文版
  • 哪里有java网络编程(第二版)的电子书下载呀
  • 请问各位几个关于java网络编程的简单问题,谢谢!
  • java网络编程的基本问题,求救(在线等待)
  • java网络编程之识别示例 获取主机网络接口列表
  • 在java网络编程中,传递数据时,如何把二维数组从客户端传递到服务器端?请教大家,谢了
  • java网络编程高手请进!高分求教!问题解决一定给分!!!
  • 请问有谁有关于JAVA无线网络编程的资料,能不能给我发一份,或者介绍相关免费网战也可以
  • 用JAVA过行无线网络编程,我现在只知道要用到J2ME,可其它就都不知道了,可不可以介绍一下
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • 我想买台二手笔记本作编程,请问java编程的最低配置是多少,价几何
  • 哪位java同门师兄有《java2编程详解》电子文档,注意不是影印版
  • 《java编程指南 》这本书好吗?
  • ubuntu上配置Java编程环境
  • 针对使用java进行硬件编程
  • Linux下java编程
  • 基于Java的新编程语言 Jabaco
  • [菜鸟提问]关于linux下的java编程
  • Java行为驱动编程框架 JDave
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 简单说说Java SE、Java EE、Java ME三者之间的区别


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3