java使用socket网络编程实现qq互聊(UPD简单版本)
JAVA初学者。勿喷。
eclipse稍微有点难用,关程序是在Console里面,要是没开出来并且死循环的话电脑cpu直接拉满了。
而且进程的关闭是输入指定的”再见“才关闭多线程,直接关的话线程其实还在跑。得自己去找该线程的Console来关。
最近被多线程,网络编程,数据库,可视化这些点的作业搞得有点无语..做题时间都没了。
接收端线程
package chat;
import java.io.*;
import java.net.*;///接收端
public class Updchat1 implements Runnable {private DatagramSocket socket=null;private int port;private String msgFrom;public Updchat1(int port,String msgFrom) {this.port=port;this.msgFrom=msgFrom;try {socket=new DatagramSocket(port);///从哪个端口接收}catch(SocketException e) {e.printStackTrace();}}public void run() {while(true) {byte[] container=new byte[1024];DatagramPacket packet=new DatagramPacket(container,0,container.length);try {socket.receive(packet);///阻塞式接受包裹} catch (IOException e) {e.printStackTrace();}///用“再见”断开连接byte[] data=packet.getData();String receiverData=new String(data,0,data.length);System.out.println(msgFrom+":"+receiverData);if(receiverData=="再见") {break;///断开连接}}socket.close();///关闭管道}
}
发送端线程
package chat;import java.io.*;
import java.net.*;///发送端
public class Updchat2 implements Runnable {DatagramSocket socket=null;BufferedReader reader=null;private int fromPort;// 来自哪里的端口号private String toIP;// 发送到哪个IPprivate int toPort;// 发送到哪里的端口号。public Updchat2(int fromPort,String toIP,int toPort) {this.fromPort=fromPort;this.toIP=toIP;this.toPort=toPort;try {socket=new DatagramSocket(fromPort);reader=new BufferedReader(new InputStreamReader(System.in));}catch(Exception e) {e.printStackTrace();}}@Overridepublic void run() {// TODO Auto-generated method stubwhile(true) {try {String data=reader.readLine();byte[] datas=data.getBytes();DatagramPacket packet=new DatagramPacket(datas,0,datas.length,new InetSocketAddress(this.toIP,this.toPort));socket.send(packet);System.out.println();if(datas.toString()=="再见") {break;}}catch(Exception e) {e.printStackTrace();}}socket.close();}}
启动线程
package chat;public class Talkstudent {public static void main(String[] arges) {///开启两个线程new Thread(new Updchat2(7777,"localhost",9999)).start();;学生从7777端口发到老师9999端口new Thread(new Updchat1(8888,"老师")).start();///学生从8888端口接收老师消息}
}
package chat;public class TalkTeacher {public static void main(String[] arges) {new Thread(new Updchat2(5555,"localhost",8888)).start();;///老师从5555端口发送到学生的8888端口new Thread(new Updchat1(9999,"学生")).start();///老师从9999接收学生的消息}
}
java使用socket网络编程实现qq互聊(UPD简单版本)相关推荐
- Java之socket网络编程
socket网络编程 文章目录 socket网络编程 一.网络编程概述 二.网络通信要素概述 三.IP和端口号 四.网络协议 五.TCP网络编程 六.UDP网络编程 一.网络编程概述 网络编程的目的 ...
- JAVA.SE Socket网络编程
文章目录 1.网络编程入门 1.1软件架构介绍 1.2互联网通信协议 1.3网络编程的三要素 2.TCP通信 2.1通信分为客户端与服务器 2.2 socket的介绍与使用 2.3servletSoc ...
- 【Java】Socket网络编程解读与实战
Socket原理 Socket原理 <Socket 到底是什么> Socket--套接字 是网络应用程序编程的接口和一种机制 用套接字中的相关函数来建立连接和完成通信 Socket可以看成 ...
- (Java)socket网络编程及处理socket粘包拆包问题
目录 1.socket简介 2.TCP/IP协议 3.tcp三次握手 4.socket的一些接口函数原理 5.java socket 长连接粘包拆包问题 6.socket模拟服务端客户端发消息 7.U ...
- 【Java】Socket网络编程实现内网穿透、端口映射转发、内网穿透上网工具的编写,设置IP白名单防火墙
这里写目录标题 简介 更新 一.背景 1.1 情景假设 1.2 想要达到的目的 1.3 局限 1.3 解决方案一(路由器NAT) 1.4 解决方案二(云服务器转发) 二.方案介绍 2.1 方案简介 2 ...
- Java的Socket网络编程
1.Socket是什么? socket是进程之间通信的一种方式,调用这个网络库中的一些API实现分布在不同主机之间的相关进程的一些数据交换. 服务器端需要做的事情 打开一个通信通道并告诉本机,它愿意在 ...
- Java 之 socket 网络编程
客户端 import java.io.*; import java.net.Inet4Address; import java.net.InetSocketAddress; import java.n ...
- Socket网络编程(代码实现)
Socket网络编程主要分为UDP协议编程和TCP协议编程,下面将会从网络编程概述.UDP编程代码实现和TCP编程代码实现三个方面来全面介绍Socket网络编程. 1.网络编程概述 (1)软件编程2种 ...
- Linux C++/Java/Web/OC Socket网络编程
一,Linux C++ Socket网络编程 1.什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制 ...
最新文章
- 2021年开源SLAM算法集锦
- VTK:几何对象之Plane
- c++ 不能分配给为0的数组_【嵌入式C】你有想过quot;数组下标quot;为何从0开始吗?...
- springboot获取当前服务ip_springboot(6)——整合日志
- 大数据之-入门_大数据发展前景---大数据之hadoop工作笔记0005
- Codeforces 1041C(贪心+set)
- 斐讯e1刷集客_斐讯无线AP2543CD 1750M AP 无拆刷Breed集客AP固件
- 打造网站克隆、仿站工具、含源码(.NET CORE + selenium + chromedriver)
- 第一届腾讯社招广告大赛总结
- 计算机机器语言教程,机器语言.ppt
- 蒲丰投针结果_Scratch3.0模拟布丰投针,求π的近似值#寻找真知派#
- 差点被一个截图忽悠了,分析一个QQ空间钓鱼网站
- android11安装第三方,Android Apk安装(兼容Android11 Api30)
- 如何使用Excel管理项目?
- Mock 模拟测试简介及 Mockito 使用入门
- 如何快速定位 elastic search 运行出现的 bug HTTP/1.1 400 Bad Request type is missing VALUE_NUMBER_INT
- MUI移动端开发,嵌入ifream,页面返回问题解决
- baocms伪静态_最新BAOCMS 6.2本地O2O生活门户系统多城市完整版源码下载 贴吧圈子+缴费服务+政务活动+微信等...
- 如何知道特征的重要性
- 2022年《深圳市新引进博士人才生活补贴工作实施办法》最新政策
热门文章
- 开票系统 文化服务器,开票服务器系统
- 物联网传感器_基于传感器的物联网预测性维护,为什么必须对机器进行数字信号处理...
- MySQL开发技巧 第二禅(子查询中匹配两个值、解决同属性多值过滤的问题、计算累进税的问题)
- 用C#开发的双色球走势图(一)
- WORD转换成PDF转换器2015官方版?
- RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术
- 为什么服饰板块港股强于A股?看看这背后的逻辑吧
- centos 安装openvpn
- ESP8266--esp8266-alink-v1.0学习笔记(一)
- html块级元素和行内元素吗,块级元素和行内元素有什么区别