线程下的udp和tcp局域网聊天

多线程,继承Thread类,重写run方法。
udp下的聊天。 两方,每一方都可发,可收。

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;class Write extends Thread {DatagramSocket send = null;Scanner sc = null;int port = -1;public Write() {}public Write(DatagramSocket send, int port, Scanner sc) {this.send = send;this.port = port;this.sc = sc;}// 重写run方法public void run() {try {while (true) {//System.out.print("我:");byte[] b = sc.next().getBytes();DatagramPacket p = new DatagramPacket(b, b.length, InetAddress.getByName("127.0.01"), port);send.send(p);}} catch (Exception e) {e.printStackTrace();} finally {sc.close();send.close();}}
}class Read extends Thread {DatagramSocket socket = null;public Read() {}public Read(DatagramSocket receive) {this.socket = receive;}public void run() {while (true) {		try {byte[] b = new byte[1024];DatagramPacket p = new DatagramPacket(b, b.length);socket.receive(p);byte[] data = p.getData();System.out.println("来自" + p.getPort() + "端口的消息: " + new String(data, 0, p.getLength()));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
}

tcp下的聊天

package com.fun.test;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;public class MadeRun {/** @author echo lovely* * @Date 2020/1/7* * */public static void main(String[] args) throws Exception {Socket s = new Socket(InetAddress.getByName("127.0.0.1"), 10011);System.out.println("我是客户端, pls answer me.");WriteThread wt = new WriteThread(s, new Scanner(System.in));		wt.start();ReadThread rt = new ReadThread(s);rt.start();}	}
// write
class WriteThread extends Thread {Socket s = null;Scanner sc = null;public WriteThread() {}public WriteThread(Socket s, Scanner sc) {this.s = s;this.sc = sc;}public void run() {try {		while (true) {OutputStream out = s.getOutputStream();byte[] b = sc.next().getBytes();out.write(b);}	} catch (IOException e) {e.printStackTrace();}}
}// read
class ReadThread extends Thread {Socket s = null;public ReadThread() {}public ReadThread(Socket s) {this.s = s;}public void run() {try {		while (true) {		InputStream in = s.getInputStream();byte[] b = new byte[1024];int len = in.read(b);if (len != -1) {System.out.println(getName() + new String(b, 0, len));}}		} catch (IOException e) {e.printStackTrace();}}
}
package com.fun.test;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;public class Test {public static void main(String[] args) throws IOException  {ServerSocket ss = new ServerSocket(10011);System.out.println("服务端开启啦");Socket s = ss.accept();// 10个线程池。int i = 0;for (i = 0; i < 10; i ++) {WriteThread wt = new WriteThread(s, new Scanner(System.in));		wt.start();ReadThread rt = new ReadThread(s);rt.start();}		ss.close();}
}

tcp下的线程聊天的小bug,文字太长,不能全部收到。
好像多是废话垃圾代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

委托事件实现更新窗体

委托 和 事件在 .Net Framework中的应用非常广泛。 委托( Delegate )&#xff1a;是一种定义方法签名(只有方法的名字&#xff0c;没有方法体)&#xff0c;可以与具有兼容的签名的任何方法关联。所谓兼容的方法&#xff0c;是指 这个方法和委托的方法签名具有相同的返回类型和参…

1050. 螺旋矩阵(25)

1050. 螺旋矩阵(25) 时间限制150 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue本题要求将给定的N个正整数按非递增的顺序&#xff0c;填入“螺旋矩阵”。所谓“螺旋矩阵”&#xff0c;是指从左上角第1个格子开始&#xff0c;按顺时针螺旋方向填充。要求…

Java多线程,锁(synchronize),饿汉式单例线程,等待处理机制

一&#xff0c;礼让和守护线程 package com.much.hard;public class TestYieldProtect {public static void main(String[] args) {Yield1 y1 new Yield1();y1.setName("A");Yield2 y2 new Yield2();y2.setName("B");//y1.start();//y2.start();Daemon1…

升级ADT22.6后,Android模拟器无法创建

这 两天&#xff0c;在社区里看到有小伙伴们反应&#xff0c;自己在Eclipse下无法创建Android模拟器的问题。起初&#xff0c;自己也没太在意&#xff0c;我一直使用的是 Genymotion模拟器。然后&#xff0c;问题不解决&#xff0c;总有那么一天会让自己碰到的。这不&#xff0…

1052. 卖个萌 (20)

1052. 卖个萌 (20) 时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见&#xff0c;我们假设一个表情符号是按下列格式输出的&#xff1a; [左手]([左眼][口][右眼])[右手]…

原来js的parseInt函数还可以这样用

QQpc端登录账号还可以这样玩&#xff01;&#xff01;&#xff01; 图片上来。 wow&#xff0c;我惊呆了。 居然可以登录进出&#xff1f;&#xff01; 都知道&#xff0c;登录会验证账号是整数&#xff0c;文本框输入的是字符串&#xff0c;会把字符串转成整数&#xff0c; 而…

一步步学习SPD2010--词汇表

association关联&#xff1a;两个ECTs外部内容类型间的关系。 BCS业务连接服务&#xff1a;见Business Connectivity Service(BCS) BDC业务数据连接&#xff1a;见Business Data Connectivity&#xff08;BDC&#xff09; breadcrumb面包屑导航&#xff1a; 一系列链接&#xf…

1035. 插入与归并(25)

1035. 插入与归并(25) 时间限制200 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者CHEN, Yue根据维基百科的定义&#xff1a; 插入排序是迭代算法&#xff0c;逐一获得输入数据&#xff0c;逐步产生有序的输出序列。每步迭代中&#xff0c;算法从输入序列中取出一元…

自定义泛型集合,接口

自定义泛型集合 package C12_21;public class abstractList {public static void main(String[] args) {stu<String> stus new stu<String>();stus.setS("hello");System.out.println(stus.getS());// 灵活, 可以传入任意数据类型。 将运行错误转变为编…

安装json扩展

json_encode无法使用&#xff0c;要求扩展php>5.2,json>2.1.0 http://syue.com/Software/Web/php/17843.html 改php.ini加extensionjson.so转载于:https://www.cnblogs.com/mucaiweiblog/p/3618599.html

实验1 熟悉实验环境

本操作系统实验的硬件环境是IA-32(x86)架构的PC机&#xff08;就是你现在正在使用的计算机&#xff09;&#xff0c;主要软件环境是Bochs gcc 你最喜欢的编辑器/IDE 你最喜欢的操作系统 Linux 0.11源代码。实验的基本流程是根据实验要求编写应用程序、修改Linux 0.11的源代…

c/s和b/s两种开发模式

CS&#xff08;Client/Server&#xff09;&#xff1a;客户端----服务器结构。 C/S结构在技术上很成熟&#xff0c;它的主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据。因为客户端要负责绝大多数的业务逻辑和UI展示&#xff0c;又称为…

前端学习(1032):jquery插件-瀑布流

1网址打开 下载插件 2引入css和js和html 3修改图片

实验2 操作系统的引导

操作系统的引导 实验目的 熟悉hit-oslab实验环境&#xff1b;建立对操作系统引导过程的深入认识&#xff1b;掌握操作系统的基本开发过程&#xff1b;能对操作系统代码进行简单的控制&#xff0c;揭开操作系统的神秘面纱。 实验内容 此次实验的基本内容是&#xff1a; 阅读《…

从Tom说JSP原理

第一次执行&#xff1a; 客户端通过电脑连接服务器&#xff0c;因为是请求是动态的&#xff0c;所以所有的请求交给WEB容器来处理在容器中找到需要执行的*.jsp文件之后*.jsp文件通过转换变为*.java文件.java文件经过编译后&#xff0c;形成.class文件最终服务器要执行形成的*.…

初识SolrJ开发, schema.xml的配置与服务初始化.

schema.xml位于solr/collection1/conf/目录下&#xff0c;是Solr中用户定义字段类型及字段的配置文件. Solr版本: 4.6.0 第一步: Schema.xml说明 实例schema.xml结构同solr/collection1/conf/schema.xml结构一致,具体配置通过注解已注明. <?xml version"1.0" enc…

实验3 编程、编译、链接、跟踪

本章的核心知识点在4.9节&#xff0c;王爽老师讲的特别清楚明白&#xff0c;多读几遍&#xff0c;跟着多做几遍&#xff0c;增加对底层的感觉&#xff1b; 本实验的目的是明白4.9节所讲的东西&#xff0c;具体点如下&#xff1a; 1&#xff0c;command&#xff0c;debug&…

Java动态查询

CODING COMING. // 组合模糊查询 根据年龄 和 姓名 模糊查询 学生。public List<Student> findTwo(int age, String name) {List<Student> list new ArrayList<Student>();StringBuffer sql new StringBuffer("select * from student where 1 1&quo…