在上次发表类似文章的基础上做了一点手脚,这次可以直接运行两个控制台,不用再去用telnet IP端口了,这个可以直接在eclipse分别执行服务器端类和客户端类,然后在客户端和服务端上进行交互。更为方便。我的代码实现如下:

首先我的文件结构是

在ServerDemo.java中编写以下代码:

package com.jiaxun.net;import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;public class ServerDemo {//服务器public static void testServer(){//创建一个服务器System.out.println("等待客户端连接。。。");PrintWriter pwtoclien = null;Scanner keybordscanner = null;Scanner inScanner = null;ServerSocket ss = null;try {ss = new ServerSocket(6666);//创建一个接收连接客户端的对象Socket socket = ss.accept();System.out.println(socket.getInetAddress()+"已成功连接到此台服务器上。");//字符输出流pwtoclien = new PrintWriter(socket.getOutputStream());pwtoclien.println("已成功连接到远程服务器!"+"\t"+"请您先发言。");pwtoclien.flush();keybordscanner = new Scanner(System.in);inScanner = new Scanner(socket.getInputStream());//阻塞等待客户端发送消息过来while(inScanner.hasNextLine()){String indata = inScanner.nextLine();System.out.println("客户端:"+indata);System.out.print("我(服务端):");String keyborddata = keybordscanner.nextLine();System.out.println("我(服务端):"+keyborddata);pwtoclien.println(keyborddata);pwtoclien.flush();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {pwtoclien.close();keybordscanner.close();inScanner.close();try {ss.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String[] args) {testServer();}
}

在ClientDemo.java中编写以下代码:

package com.jiaxun.net;import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;public class ClientDemo {public static void testClient(){System.out.println("正在向服务器请求连接。。。");Socket socket = null;Scanner keybordscanner = null;Scanner inScanner = null;PrintWriter pwtoserver = null;try {socket = new Socket("192.168.0.12", 6666);inScanner = new Scanner(socket.getInputStream()); System.out.println(inScanner.nextLine());pwtoserver = new PrintWriter(socket.getOutputStream());System.out.print("我(客户端):");//先读取键盘录入方可向服务端发送消息keybordscanner = new Scanner(System.in);while(keybordscanner.hasNextLine()){String keyborddata = keybordscanner.nextLine();//展示到己方的控制台System.out.println("我(客户端):"+keyborddata);//写到服务端的的控制台pwtoserver.println(keyborddata);pwtoserver.flush();//阻塞等待接收服务端的消息String indata = inScanner.nextLine();System.out.println("服务端:"+indata);System.out.print("我(客户端):");}} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {keybordscanner.close();pwtoserver.close();inScanner.close();try {socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public static void main(String[] args) {testClient();}
}

效果如下:

ServerDemo的控制台的显示结果

ClientDemo的控制台的显示结果

java用socket和serversocket实现一对一聊天(java实现简单的TCP聊天程序)相关推荐

  1. java局域网聊天代码_简单的局域网聊天程序(java版本的)

    局域网聊天程序,首先我已经默认你的电脑已经配置好的java开发的一些环境,所需代码有两个java的源代码,他们分别是1:Server_Test.java-------2:Socket_Test.jav ...

  2. java项目qq聊天室_简单的qq聊天室项目(作者涂俊伟)

    项目总结 经过这10天的项目实训使我们受益匪浅.虽然其中遇到了很多困难,在写程序 中是写一个函数,就调试一次,看看 有没有问题,再继续往下写,这样减轻了后面调试的压力. 项目过程: 1.构思,聊天室的 ...

  3. java使用socket网络编程实现qq互聊(UPD简单版本)

    JAVA初学者.勿喷. eclipse稍微有点难用,关程序是在Console里面,要是没开出来并且死循环的话电脑cpu直接拉满了. 而且进程的关闭是输入指定的"再见"才关闭多线程, ...

  4. node php聊天室,最简单的Nodejs聊天室示例

    今天群里一个同学找我要一个nodejs聊天室的demo.给他了一个简单的例子,顺便记录下: 准备工作(前提是已经装好了nodejs):mkdir nodejs-demo cd nodejs-demo安 ...

  5. 聊天室 一个简单的mqtt聊天室的实现

    一.架构总体 云端服务器 负责 1.mqtt代理服务器 2.网页服务器 3.聊天数据账户的db 客户端 逻辑/能力 描述 1.页面刚打开时,服务端从数据库下发用户下的所有好友关系(topic形式存在) ...

  6. api有哪些 javasocket_基于java的socket编程及API解析

    一.socket通讯过程 1.socket与socket编程简介: socket 被翻译为"套接字",它是计算机之间进行通信的一种约定或一种方式.通过 socket 这种约定,一台 ...

  7. java socket 获取网页源代码_通过java.net.Socket 类抓取网页内容

    /** 文件名 : Firstsocket.java 描述 :通过 java.net.Socket 类访问一个web页面,并且返回结果 作者: 慈勤强 cqq1978@yeah.net 参考:http ...

  8. Java笔记整理七(网络编程,TCP通信程序,函数式接口,方法引用)

    网络编程入门 1.软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. B/S结构 :全称为Browser/Server结构,是指浏览器和 ...

  9. java中socket实现一对一聊天

    要求:使用socket实现简单聊天机器人功能,客户端发给服务端一句话,服务端返回一句话(可以是固定的"你好",也可以是随机的),当客户端输入exit时结束对话. 总体思想: 创建s ...

最新文章

  1. YOLOv4全文阅读(全文中文翻译)
  2. 文件服务器访问权限分配,设置文件服务器的访问权限
  3. matlab实现三次样条插值
  4. recycleviewitem 列表加载动画_2019年Q4动画数据报告 | 伍六七之最强发型师评论数破十万...
  5. luogu P2742 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows
  6. 二叉树构造c语言实现,递归创建二叉树c语言实现+详细解释
  7. Arduino入门笔记(6):温度传感器及感温杯实验
  8. idea怎么给项目改名_IDEA相关配置【java项目改造成web项目】
  9. nginx + gunicorn + django 2.0 踩坑
  10. python命令行安装包
  11. 新能源充电桩后台管理系统平台
  12. 均匀分布的期望和方差
  13. 一文解析TCP知识体系
  14. OpenShift免费空间申请使用教程
  15. wo-27s管理员账户和密码_“无法使用内置管理员账户打开”应用
  16. 收到了两家公司的offer怎么选择?
  17. 黄金比例编程python_python实现黄金分割法
  18. 分享一个通过网络链接PDF转JPG的公用方法
  19. 外包 | LBP/HOG/CNN 实现对 CK/jaffe/fer2013 人脸表情数据集分类
  20. 如何批量重命名文件?

热门文章

  1. Apache Cordova development lands on Visual Studio Code
  2. 集成微信登入遇到问题
  3. Bean的作用域和生命周期-----Spring
  4. firefox Chrome浏览器redux devTools调试工具
  5. ES6模块体系及DDN区块链设计开发规范
  6. 国家统计局举办开放日 称将迎接“大数据”挑战
  7. cocos获取图片像素
  8. 把一个把正整数分解为素数乘积
  9. 【质数乘积且包含回文快速近积数】2021-11-22
  10. android 分享纯图片到QQ空间实现方式