当前位置: 首页 > news >正文

做网站买流量/seo搜索引擎优化工资

做网站买流量,seo搜索引擎优化工资,杭州疫情最新资讯,怎样做班级网站android开发之简单聊天室 前文 本文将介绍怎么使用socket阻塞通信结合多线程来实现一个简单的聊天室。 我这里是用java写的一个服务器端,用android写的客户端。 1.TCP服务器端实现 直接上代码 1.主代码 主代码主要实现了通道(这里本人定义了一个线程…

android开发之简单聊天室

前文

本文将介绍怎么使用socket阻塞通信结合多线程来实现一个简单的聊天室。

我这里是用java写的一个服务器端,用android写的客户端。

1.TCP服务器端实现

直接上代码
1.主代码
主代码主要实现了通道(这里本人定义了一个线程类来实现信息的发送和接受)的链接,发送和接受信息,然后通过发送过来的消息来判断是群发还是私发,当中的逻辑实现,各位自己看代码就成,!!!!

package com.TCP;import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;/* * MyServer类,用于监听客户端Socket连接请求 */
public class server {private List<Mychannel> channellist = new ArrayList<Mychannel>();public static void main(String[] args) throws IOException {new server().start();}	public void start() throws IOException{@SuppressWarnings("resource")ServerSocket serverSocket = new ServerSocket(8888);System.out.println("服务器启动!!!");while(true){Socket socket = serverSocket.accept();System.out.println(socket.toString()+"已连接");Mychannel mychannel = new Mychannel(socket);channellist.add(mychannel);new Thread(mychannel).start();}}/*** 一个客户一个通道* @author**/public class Mychannel implements Runnable{private DataInputStream dis;private DataOutputStream dos;private boolean isRunning = true;private String name;public Mychannel(Socket socket){try {dis = new DataInputStream(socket.getInputStream());dos = new DataOutputStream(socket.getOutputStream());this.name = dis.readUTF();sendohters(this.name+"已上线"+"\n");System.out.println(this.name);} catch (IOException e) {//e.printStackTrace();CloseUtil.closeAll(dis,dos);isRunning = false;}}//读取数据private String receive(){String content = "";try {content = dis.readUTF();System.out.println("读取的数据:"+content);} catch (IOException e) {//e.printStackTrace();System.out.println("读取数据出现错误!");CloseUtil.closeAll(dis,dos);isRunning = false;channellist.remove(this);}return content;}//发送数据private void send(String content){if(content==null||content.equals("")){return ;}try {dos.writeUTF(packMessage(content));System.out.println("发送的数据:"+packMessage(content));} catch (IOException e) {//e.printStackTrace();System.out.println("发送数据出现错误!");CloseUtil.closeAll(dis,dos);isRunning = false;channellist.remove(this);}}//发送数据给其他客户端private void sendohters(String content){if(content.indexOf("/")>-1){String name = getname(content);for(Mychannel other:channellist){if(other.name.equals(name)){other.send(content);}}}else{for(Mychannel other:channellist){other.send(content);}}}//得到目标人物的名称private String getname(String content){String name = null;int Pbegin = content.indexOf("/");int Pend = content.indexOf(".");name = content.substring(Pbegin+1,Pend);return name;}//运行public void run() {while(isRunning){sendohters(this.receive());}}/** 对要广播的数据进行包装*/private String packMessage(String content) {String msg = null;String time = null;String Pcontent = null;/*int begin = content.indexOf("<");int end = content.indexOf(">");*/int Pbegin = content.indexOf("/");int Pend = content.indexOf(".");if(Pbegin>-1&&Pend>-1){Pcontent = content.substring(Pend+1);time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());msg = "<"+this.name+">"+"    "+time+"\n"+"-"+this.name+"悄悄的和你说:"+Pcontent+"\n";}else{/*name = content.substring(begin,end+1);content = content.substring(end+1);*/time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());msg = "<"+this.name+">" + "  " + time +"\n"+"内容为(群发):"+ content + "\n";}//System.out.println("有几个客户端运行几次packMessage" + msg);return msg;}}}

2.相关工具类
CloseUtil类用来关闭流,有一定java基础的应该都看得懂!!!!

package com.TCP;import java.io.Closeable;
import java.io.IOException;public class CloseUtil {public static void closeAll(Closeable...io) {for (Closeable temp:io) {if(null!=temp) {try {temp.close();} catch (IOException e) {e.printStackTrace();}}}}
}

User类是用户的工具类

package com.TCP;import com.TCP.server.Mychannel;/*** Created by littlecurl 2018/6/24*/
public class User {private String name;            //用户名private Mychannel channel;        //密码public User(Mychannel channel, String name) {this.channel = channel;this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Mychannel getChannel() {return channel;}public void setChannel(Mychannel channel) {this.channel = channel;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", password='" + channel + '\'' +'}';}
}

2.客户端的实现

客户端首先会有一个登陆界面,然后登陆成功后就能进入聊天室,登陆之前需要注册
由于代码太多,这里就放到这和你们详细分享了,如果感兴趣的朋友,我会把链接放在下面,大家可自行下载。
1.这是登陆界面,大家可以自己改图片和界面都是可行的
在这里插入图片描述
聊天的界面我就不放了,因为懒。。。。。。,

链接: https://pan.baidu.com/s/1ki1ifL6ki1jmvkm-l6xKmw
提取码:wwnb

http://www.lbrq.cn/news/1541593.html

相关文章:

  • 中国日报网英文官方网站建设/北京发生大事了
  • 网站建设 广西/网站推广优化方法
  • 做网站需要的条件/江西seo推广方案
  • 靠谱做网站/电商网站定制开发
  • 投票小程序/seo关键词优化要多少钱
  • 外包建站的公司怎么做seo/公司在百度怎么推广
  • 做那种网站赚钱/产品推销
  • 如何做阿里巴巴网站/引擎优化seo怎么做
  • 网站为什么没有排名了/网站联盟营销
  • 灰色网站怎么做seo/b2b平台有哪些
  • 网站开发群/首页优化公司
  • 房产信息查询平台/seol英文啥意思
  • 医院为什么要做门户网站建设/外链推广论坛
  • 手机网站开发实例/最近热点新闻事件2023
  • 上海发布官方网/深圳谷歌seo推广
  • 手机wap网站开发教程/专业网站优化公司
  • 重庆美邦建网站/天津seo推广服务
  • 单产品网站建设/上海网站建设关键词排名
  • 河北保定网站建设/网站统计器
  • 杭州网站推广方式/网店代运营一年的费用是多少
  • 网站开发开源的手册/网络营销策划方案ppt
  • 高端网咖/福建网络seo关键词优化教程
  • 域名网站开发有意义吗/培训课程
  • 行业网站建设内容/做网站用什么编程软件
  • 模仿网站怎么做/足球世界排名国家
  • 旅游景区网站建设/网络营销的主要工作有哪些
  • 学做网站学什么语言/百度浏览器手机版
  • 网站图片自动切换怎么做/合肥网站关键词优化公司
  • hao1123网址之家/seo网络优化师
  • 手机网站视频播放模板/郑州网络推广厂家
  • mysql-8.0.37-linux-glibc2.12-x86_64安装
  • 【C++】模版(初阶)
  • 人工智能统一信息结构的挑战与前景
  • Lucene 8.5.0 的 `.pos` 文件**逻辑结构**
  • openfeign 只有接口如何创建bean的
  • 网站服务器使用免费SSL证书安全吗?