用Socket创建一个聊天窗口
时间:2019-11-23
本文章向大家介绍用Socket创建一个聊天窗口,主要包括用Socket创建一个聊天窗口使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我们将里面的IP地址 例如 192.168.2.143改成192.168.2.255就是将内容发送给192.168.2.(0-254)里面的所有人
package Intnet; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.security.interfaces.DSAKey; public class Thresend implements Runnable { private DatagramSocket send; public Thresend(DatagramSocket send) { super(); this.send = send; } @Override public void run() { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = null; try { while((line = br.readLine()) != null) { byte buf[] = line.getBytes(); try { DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.2.255"),1150); send.send(dp); if(line.equals("再见臭弟弟"))break; } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } package Intnet; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class Threrece implements Runnable { private DatagramSocket rece; public Threrece(DatagramSocket rece) { super(); this.rece = rece; } @Override public void run() { // TODO Auto-generated method stub while(true) { byte buf[] = new byte [1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length); try { rece.receive(dp); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String ip = dp.getAddress().getHostAddress(); int port = dp.getPort(); String text = new String(dp.getData(),0,dp.getLength()); System.out.println(ip + ":" + port + ":" + text); } } } package Intnet; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class Thredemo { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub DatagramSocket send = new DatagramSocket(); DatagramSocket rece = new DatagramSocket(1150); Thresend s = new Thresend(send); Threrece r = new Threrece(rece); new Thread(s).start(); new Thread(r).start(); } }
原文地址:https://www.cnblogs.com/WINDZLY/p/11919063.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu16.04 ext4格式硬盘挂载普通用户权限控制的操作方法
- Apache Spark 2.0 在作业完成时却花费很长时间结束
- centos 6.9 升级glibc动态库的详细过程
- Ubuntu18.04(linux)安装MySQL的方法步骤
- ubuntu18.0.4安装mysql并解决ERROR 1698 (28000): Access denied for user ''root''@''localhost''
- 动态在线扩容root根分区大小的方法详解
- centos7使用rpm安装mysql5.7的教程图解
- 关于Linux命令行下的数学运算示例详解
- Apache访问日志的配置与使用
- linux启动和重启nginx方法
- 简单谈谈centos7中配置php
- Linux动态链接库的使用
- Linux下部署springboot项目的方法步骤
- Linux、CentOS下安装zip与unzip指令功能(服务器)
- Linux上查看用户创建日期的几种方法总结