用VB 编写的聊天程序,怎样实现多个用户进行通信

用VB 编写的聊天程序,怎样实现多个用户进行通信,第1张

我也写过聊天程序,一般来说也就是使用winsock控件来通讯,我认真想过,但也没有想到特别方便的方法。我的做法是这样的:所有用户都有一个sc(0)在监听某个端口,比如1234。每次需要发送数据到其它计算机的时候,就load

sc(newindex),用这个新load出来的winsock来发送到那个用户的1234端口。为了可以及时回收,用一个集合来记录sc()中哪个下标正在使用,以决定在load的时候newindex的数字。当数据发送完毕,就unload

sc(finishindex),并从集合中把下标退出来。实际上在局域网发送文本消息几乎不需要多长时间,所以就算你在狂发信息,(我试过监视sc的数目)一般来说就是一个sc(0)在监听(当然这个是一直不会关的),一个sc(1)在发送,已经极少碰到load一个sc(2)的情况了。使用该方法的确能有效的保证在多用户聊天的情况下保证发送和接受都正确。

至于显示消息则很简单了。在接收方sc(0)的收到消息事件中将信息提取出来放到某个textbox即可,而发送方则可以在消息发送完毕的事件中将信息放到textbox中。

如果你看得不是很明白,我可以贴出我的部分代码,或者给你作进一步讲解。

如果需要快速实现微信小程序聊天室功能,那么建议你可以接入即构科技的SDK,提供小程序实时消息和多人音视频通话功能,支持单聊、群聊、聊天室人数无上限࿏༶支持1080P高清视频,百万高并发,全终端覆盖,快速集成上线,可以节省90%开发时间。

微信小程序实现语音聊天功能你可以用第三方的SDK来实现,开发者在自有小程序快速实现语音通话、视频通话、互动直播、聊天室等功能,接口开放灵活࿏༶提供适用直播、教育、社交、游戏等多行业多业务场景的解决方案,满足业务需要,包含微信小程序下的音视频推拉流能力,支持iOS、Android、Windows、Web、H5等多平台互通。

/

基于UDP协议的聊天程序

2007918

/

//导入包

import javaawt;

import javaawtevent;

import javaawteventActionEvent;

import javaawteventActionListener;

import javaxswing;

import javanet;

public class Chat extends JFrame implements ActionListener

{

//广播地址或者对方的地址

public static final String sendIP = "172188255";

//发送端口9527

public static final int sendPort = 9527;

JPanel p = new JPanel();

List lst = new List(); //消息显示

JTextField txtIP = new JTextField(18); //填写IP地址

JTextField txtMSG = new JTextField(20); //填写发送消息

JLabel lblIP = new JLabel("IP地址:");

JLabel lblMSG = new JLabel("消息:");

JButton btnSend = new JButton("发送");

byte [] buf;

//定义DatagramSocket的对象必须进行异常处理

//发送和接收数据报包的套接字

DatagramSocket ds = null;

//=============构造函数=====================

public Chat()

{

CreateInterFace();

//注册消息框监听器

txtMSGaddActionListener(this);

btnSendaddActionListener(this);

try

{

//端口:9527

ds =new DatagramSocket(sendPort);

}

catch(Exception ex)

{

exprintStackTrace();

}

//============接受消息============

//匿名类

new Thread(new Runnable()

{

public void run()

{

byte buf[] = new byte[1024];

//表示接受数据报包

while(true)

{

try

{

DatagramPacket dp = new DatagramPacket(buf,1024,InetAddressgetByName(txtIPgetText()),sendPort);

dsreceive(dp);

lstadd("消息来自◆" + dpgetAddress()getHostAddress() + "◆"+"说:" + new String (buf,0,dpgetLength()) /+ dpgetPort()/,0);

}

catch(Exception e)

{

if(dsisClosed())

{

eprintStackTrace();

}

}

}

}

})start();

//关闭窗体事件

thisaddWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent w)

{

Systemoutprintln("test");

int n=JOptionPaneshowConfirmDialog(null,"是否要退出","退出",JOptionPaneYES_NO_OPTION);

if(n==JOptionPaneYES_OPTION)

{

dispose();

Systemexit(0);

dsclose();//关闭ds对象//关闭数据报套接字

}

}

});

}

//界面设计布局

public void CreateInterFace()

{

thisadd(lst,BorderLayoutCENTER);

thisadd(p,BorderLayoutSOUTH);

padd(lblIP);

padd(txtIP);

padd(lblMSG);

padd(txtMSG);

padd(btnSend);

txtIPsetText(sendIP);

//背景颜色

lstsetBackground(Coloryellow);

//JAVA默认风格

thissetUndecorated(true);

thisgetRootPane()setWindowDecorationStyle(JRootPaneFRAME);

thissetSize(600,500);

thissetTitle("〓聊天室〓");

thissetResizable(false);//不能改变窗体大小

thissetLocationRelativeTo(null);//窗体居中

thissetDefaultCloseOperation(JFrameDO_NOTHING_ON_CLOSE);

thissetVisible(true);

txtMSGrequestFocus();//消息框得到焦点

}

//===============================Main函数===============================

public static void main(String[]args)

{

new Chat();

}

//================================发送消息===============================

//消息框回车发送消息事件

public void actionPerformed(ActionEvent e)

{

//得到文本内容

buf = txtMSGgetText()getBytes();

//判断消息框是否为空

if (txtMSGgetText()length()==0)

{

JOptionPaneshowMessageDialog(null,"发送消息不能为空","提示",JOptionPaneWARNING_MESSAGE);

}

else{

try

{

InetAddress address = InetAddressgetByName(sendIP);

DatagramPacket dp = new DatagramPacket(buf,buflength,InetAddressgetByName(txtIPgetText()),sendPort);

dssend(dp);

}

catch(Exception ex)

{

exprintStackTrace();

}

}

txtMSGsetText("");//清空消息框

//点发送按钮发送消息事件

if(egetSource()==btnSend)

{

buf = txtMSGgetText()getBytes();

try

{

DatagramPacket dp = new DatagramPacket(buf,buflength,InetAddressgetByName(txtIPgetText()),sendPort);

}

catch(Exception ex)

{

exprintStackTrace();

}

txtMSGsetText("");//清空消息框

txtMSGrequestFocus();

}

}

}

聊天APP的5大步

第一步:APP产品的需求分析

需要产品经理对市场进行需求分析,通过公司的战略,对用户的需求进行用户调研分析,通过分析以后的研究确定要开发的APP产品的主要功能,进而制定出具体的实施方案。

第二步:APP产品设计

根据APP产品经理的研究分析方案,设计团队根据解决方案设计产品。这部分有两个团队,一个是APP的交互设计团队,另一个是负责界面设计的UI设计团队。这两个团队负责不同的任务。

交互设计主要是在分析用户需求的基础上,在产品管理器中设计出最简单方便的 *** 作方法供用户使用,通过设计页面跳转,然后设计出原型地图交给开发团队进行研发。

第三:程序开发阶段

该阶段分为前端及后端开发,在UI设计完成后,由项目负责人对接到前端开发人员,将UI界面用代码展示出来,完成一个app的初稿,一般在2周左右完成,然后进行后端的服务端开发,服务端开发包括架构设计、数据库搭建、各功能需求的实现、以及接口封装、管理后台开发等等。

第四:app测试阶段

有软件测试人员对设计初步完成的app进行测试,找出app存在的问题及BUG,及时反馈给开发人员修复,一直循环,直到测试通过。

第五:项目交接验收阶段

与客户确认验收项目,客户在体验完开发好的app后,如有问题,则进行调整,直到客户体验满意验收,然后上线。

简单描述一下多端通信,目前我使用的是websocket。

服务端我用C#做的winform,Fleck技术很成熟,服务端开启,客户端连接服务端,请求服务,websocket就支持多端通信的哦,你用android或者web或者其他平台都可以连接websocket的服务。向服务端发送消息,服务端就会分配消息。

1对1聊天这种事情是你想多了,现在真的没有人干这事,双方通过三次握手一个socket拨通协议的事情是不协和的,因为你不能随心所欲切换用户,而且每一次都要响应。所以我们是主动去连接服务器,从而都达到1对1,1对多,多对一的目的,可以聊天也可以把消息转换成指令。指令有哪些比如远程 *** 作,分享上传下载之类的。服务器接收到客户端的消息,指定目标客户端发送离线消息也可以。

以上就是关于用VB 编写的聊天程序,怎样实现多个用户进行通信全部的内容,包括:用VB 编写的聊天程序,怎样实现多个用户进行通信、微信小程序怎么实现聊天功能、微信小程序语音聊天功能应该怎么实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9684459.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存