当前位置:文档之家› 蓝牙聊天程序代码解析

蓝牙聊天程序代码解析

蓝牙聊天程序代码解析
蓝牙聊天程序代码解析

蓝牙聊天程序代码解析

殷海峰

2013年10月24日

变更记录

日期作者说明2013.10.24 殷海峰完成初稿

I

目录

第1章 Android Java (1)

1.1 权限设置 (1)

1.2 启用蓝牙设备 (1)

1.2.1 获取蓝牙设备 (1)

1.2.2 打开蓝牙设备 (1)

1.3 创建监听线程 (3)

1.4 使设备可见 (4)

1.5 搜索蓝牙设备 (5)

1.5.1 获得已经配对的蓝牙设备 (5)

1.5.2 搜索蓝牙设备 (6)

1.6 连接服务器 (6)

1.7 收发数据 (7)

第2章Windows CE C++ (9)

2.1 启用蓝牙设备 (9)

2.2 搜索蓝牙设备 (9)

2.3 获取本机蓝牙名称 (10)

2.4 创建监听线程 (10)

2.5 发送数据 (10)

2.6 接收数据 (12)

II

第1章 Android Java

Android SDK 里包含了蓝牙聊天程序的源代码,具体位于android-sdk-wi ndows\samples\android-17\BluetoothChat。可以使用 adt-bundle 里的eclipse.exe 将其导入。需要准备两台 Android 手机,一个作为客户端,一个作为服务器。

1.1 权限设置

对蓝牙的操作需要相应的权限,请参考AndroidManifest.xml文件里的如下两行语句:

1.2 启用蓝牙设备

在两台手机上分别运行BluetoothChat。程序首先启动BluetoothChat这个A ctivity。

1.2.1 获取蓝牙设备

代码执行到 BluetoothChat.onCreate 函数,与蓝牙相关的代码如下:

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

mBluetoothAdapter 是一个BluetoothAdapter(蓝牙适配器),上面的代码就是获取Android手机的蓝牙设备,通过它来操作蓝牙设备。

1.2.2 打开蓝牙设备

手机上的蓝牙设备可能是处于关闭状态的,聊天前需要打开它。

代码执行到 BluetoothChat.onStart 函数:

1

if(!mBluetoothAdapter.isEnabled()){

Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUES T_ENABLE);

startActivityForResult(enableIntent, REQUEST_ENABLE_BT);

}

mBluetoothAdapter.isEnabled() 返回 true 表示蓝牙设备处于打开状态,否则表示关闭状态。

startActivityForResult 将启动一个界面,询问用户是否打开蓝牙设备。当用户单击“确定”按钮的时候,该界面会被销毁,然后系统会调用BluetoothChat. onActivityResult函数。

public void onActivityResult(int requestCode, int resultCode, Intent data){ switch (requestCode) {

case REQUEST_ENABLE_BT:

if (resultCode == Activity.RESULT_OK) {

setupChat();

}

}

}

此时的requestCode将是startActivityForResult的第二个参数,即REQUES T_ENABLE_BT。用户单击了“确定”按钮,因此 resultCode 等于Activity.RE SULT_OK。结果,setupChat 将被调用。

setupChat 最重要的工作就是创建了一个 BluetoothChatService 对象,其代码如下:

mChatService = new BluetoothChatService(this, mHandler);

BluetoothChatService 可用于服务器,创建监听线程,监听来自客户端的连接请求;也可以用于客户端,连接服务器。BluetoothChatService 构造函数的第一个参数没有任何作用。第二个参数比较重要:它用于接收来自BluetoothChat Service的反馈消息,如:BluetoothChatService完成读、写操作将发送MESSA GE_READ和MESSAGE_WRITE消息。

2

1.3 创建监听线程

代码执行到 BluetoothChat.onResume,其中最关键的代码是

mChatService.start();

它调用的是BluetoothChatService.start函数。在这个函数里,创建了两个监听线程:

mSecureAcceptThread = new AcceptThread(true);

mInsecureAcceptThread = new AcceptThread(false);

mSecureAcceptThread 用于监听加过密的连接请求,mInsecureAcceptThrea d用于监听未加密的连接请求。它们最大的区别在于:创建服务器套接字时,使用的函数不同,代码在AcceptThread的构造函数里:

if (secure) {

tmp = mAdapter.listenUsingRfcommWithServiceRecord(

NAME_SECURE,MY_UUID_SECURE);

} else {

tmp = mAdapter.listenUsingInsecureRfcommWithServiceRecord(

NAME_INSECURE, MY_UUID_INSECURE);

}

可见:listenUsingRfcommWithServiceRecord用于监听加密连接,listenUsi ngInsecureRfcommWithServiceRecord用于监听未加密连接。这两个函数的第一个参数用处不大,第二个参数很重要,即服务UUID。客户端连接服务器时,需要知道服务器提供的服务UUID是什么,否则无法连接。有些服务是固定的,如:串行口服务,其UUID就是00001101-0000-1000-8000-00805F9B34FB。在本例中,UUID是随机生成的。为了保证这个UUID不重复,可以使用Windo ws API 函数 CoCreateGuid。

在多线程AcceptThread.run里,线程在socket = mmServerSocket.accept();这个地方被阻塞。当有客户端连接的时候,accept函数才会返回,执行下面的代码。accept函数返回的套接字socket是通讯套接字和服务端的监听套接字m mServerSocket是不一样的,切莫混淆。

在AcceptThread.run里,connected(socket, socket.getRemoteDevice(),mSock etType);将创建多线程ConnectedThread,它的主要作用就是不断轮询客户端是

3

否有数据发送过来,有的话就读取并通知mHandler。

也就是说,两台手机只要运行了BluetoothChat这个程序,就都是服务器了。接下来的操作需要确定两台手机的身份:一台作为服务器,另一台作为客户端。

1.4 使设备可见

作为服务器的手机,其蓝牙设备必须能被客户端搜索到。需要对此进行设置。用户单击服务器手机上的菜单项“discoverable”,将执行到BluetoothChat. onOptionsItemSelected函数里的ensureDiscoverable函数。

public boolean onOptionsItemSelected(MenuItem item) {

Intent serverIntent = null;

switch (item.getItemId()) {

... ... ... ...

case R.id.discoverable:

ensureDiscoverable();

return true;

}

return false;

}

ensureDiscoverable函数的功能就是设置蓝牙设备能被客户端搜索到,其代码如下:

if (mBluetoothAdapter.getScanMode() !=

BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) { Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_RE QUEST_DISCOVERABLE);

discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABL E_DURATION, 300); //设置蓝牙 300 秒内可以被搜索到

startActivity(discoverableIntent);

}

startActivity将弹出一个对话框,询问是否使设备可见。请单击“确定”按钮,完成蓝牙设置。

4

1.5 搜索蓝牙设备

作为客户端的手机,必须知道服务器的地址和服务UUID,才能连接服务器。通过搜索蓝牙设备,可以获取服务器地址。

用户单击客户端手机上的菜单项“secure_connect”(加密连接)或“insecu re_connect”(未加密连接),将执行到BluetoothChat. onOptionsItemSelected函数:

public boolean onOptionsItemSelected(MenuItem item) {

Intent serverIntent = null;

switch (item.getItemId()) {

case R.id.secure_connect_scan:

serverIntent = new Intent(this, DeviceListActivity.class);

startActivityForResult(serverIntent, REQUEST_CONNECT_DEVI CE_SECURE);

return true;

case R.id.insecure_connect_scan:

serverIntent = new Intent(this, DeviceListActivity.class);

startActivityForResult(serverIntent, REQUEST_CONNECT_DEVI CE_INSECURE);

return true;

... ... ...

}

return false;

}

不论加密连接还是未加密连接,启动的都是DeviceListActivity这个Activi ty。它主要做了两项工作:列出已经配对的蓝牙设备;搜索周围的蓝牙设备。

1.5.1 获得已经配对的蓝牙设备

代码在DeviceListActivity.onCreate函数里,只有两行:

mBtAdapter = BluetoothAdapter.getDefaultAdapter();

Set pairedDevices = mBtAdapter.getBondedDevices();

5

1.5.2 搜索蓝牙设备

启动搜索的代码在DeviceListActivity.doDiscovery里,只有一行:

mBtAdapter.startDiscovery();

搜索到的蓝牙设备如何通知程序?答案是放在广播接收器mReceiver里。它的创建代码如下:

private final BroadcastReceiver mReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) {

... ... ...

}

};

mReceiver覆盖了onReceive函数,一旦搜索到蓝牙设备,就将其增加到m NewDevicesArrayAdapter这个数组里。最重要的数据就是蓝牙设备的地址,即device.getAddress()。

创建了mReceiver之后,需要注册才能正常工作,其注册代码在DeviceLi stActivity.onCreate里

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);

this.registerReceiver(mReceiver, filter);

filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISH ED);

this.registerReceiver(mReceiver, filter);

最后,不再使用mReceiver的时候,不要忘了注销,其代码在DeviceList Activity.onDestroy里

this.unregisterReceiver(mReceiver);

1.6 连接服务器

在客户端手机的DeviceListActivity界面上,完成搜索后将列出周围的蓝牙设备。用户单击某个设备,将连接该设备。

用户单击DeviceListActivity界面上的蓝牙设备列表,将调用DeviceListAc

6

tivity.mDeviceClickListener 的 onItemClick函数。关键代码如下:String info = ((TextView) v).getText().toString();

String address = info.substring(info.length() - 17);

Intent intent = new Intent();

intent.putExtra(EXTRA_DEVICE_ADDRESS, address);

setResult(Activity.RESULT_OK, intent);

finish();

上述代码中intent.putExtra保存了服务器地址。finish将销毁本界面。系统将依次调用函数:BluetoothChat.onActivityResult==> BluetoothChat.connectDevi ce==>mChatService.connect(device, secure)==>BluetoothChatService.connect。co nnect函数将创建连接线程——ConnectThread线程。该线程的重点在于:

1、由createRfcommSocketToServiceRecord或createInsecureRfcommSocket ToServiceRecord创建套接字。需要指定蓝牙服务器的服务UUID;

2、mmSocket.connect();完成连接;

3、connected(mmSocket, mmDevice,...);创建读取数据的线程——Connected Thread。

至此,服务器与客户端的蓝牙数据连接完成了,可以聊天了。

1.7 收发数据

用户程序主界面的文本框内输入文本,单击“Send”按钮,将依次调用Bl uetoothChat.sendMessage==>mChatService.write==>ConnectedThread.write。Con nectedThread.write的代码如下:

mmOutStream.write(buffer);

mHandler.obtainMessage(BluetoothChat.MESSAGE_WRITE, -1, -1, buffer). sendToTarget();

第一行是发送数据给对方,第二行是给mHandler 发送消息。这个mHandl er是BluetoothChatService.mHandler。在BluetoothChatService构造时mHandler 被指定为第二个参数,其实就是BluetoothChat.mHandler。BluetoothChat.mHan dler在处理MESSAGE_WRITE消息时,将更新界面显示。

服务器或客户端都有一个ConnectedThread线程,一旦有数据进来,就会

7

调用mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1, buffe r).sendToTarget();即给mHandler发送MESSAGE_READ消息。BluetoothChat.m Handler在处理此消息时,将更新界面显示。

8

第2章Windows CE C++

安装Windows Mobile 5 SDK 之后,一些示例代码也被安装,包括蓝牙聊天程序。其位置一般位于C:\Program Files\Windows CE Tools\wce500\Window s Mobile 5.0 Pocket PC SDK\Samples\CPP\Win32\Bthchat

测试程序,需要一部或两部Windows Mobile手机。一部手机就是自己发送、自己接收。

2.1 启用蓝牙设备

在手机上运行程序,首先是全局变量的初始化,包括全局变量BthUtils ob jBthUtils。构造函数 BthUtils::BthUtils 被执行。它做了两件事:

1、调用WSAStartup,初始化 Windows 套接字;

2、BthSetMode(BTH_DISCOVERABLE); 打开蓝牙设备,使得其它手机可以搜索、连接它。

2.2 搜索蓝牙设备

全局变量初始化完毕后,系统调用 WinMain 函数。WinMain 函数显示了一个模态对话框,它就是程序的主界面。

主界面及其内部的控件创建完毕后,系统会给主界面窗口的窗口过程发送WM_INITDIALOG消息,即系统会调用函数MainDlgProc(?,WM_INITDIALO G,?,?)。

代码执行到 CreateThread(NULL, 0, ShowDevices, (LPVOID)hDlg, 0, NU LL);时,将创建一个多线程,用来搜索周围的蓝牙设备。

搜索多线程将执行ShowDevices函数,在这个函数里最重要的代码就是ob jBthUtils.DiscoverDevices,它将搜索蓝牙设备,并将搜索到的设备增加到一个链表里。

搜索蓝牙设备的代码请参考BthUtils::DiscoverDevices函数。

9

ShowDevices函数执行完objBthUtils.DiscoverDevices之后,将搜索到的蓝牙设备加入到主界面的下拉列表框内(ID为IDC_DEVICES)。

2.3 获取本机蓝牙名称

话分两头,各表一枝。就在多线程执行ShowDevices函数的时候,主线程代码将执行到objBthUtils.GetLocalDeviceName(g_pLocalDeviceInfo);这行代码将获得本机蓝牙的名称。原理很简单,就是读取注册表。具体请参考BthUtils:: GetLocalDeviceName。

2.4 创建监听线程

主线程代码继续执行到

objBthUtils.OpenServerConnection(rgbSdpRecord,SDP_RECORD_SIZE,SDP _CHANNEL_OFFSET,DisplayMessage);

这个函数将创建一个线程——BthUtils::ReadData。这个线程用来监听,接着读取数据并将读取到的数据交给回调函数处理。回调函数由OpenServerConn ection的第4个参数指定,这里就是由DisplayMessage函数去处理。

OpenServerConnection的前三个参数,由bthnscreate.exe程序创建而成。具体如何创建,笔者未做深入研究。只是知道第一个参数里包含了蓝牙服务的G UID,这个参数很重要,客户端连接时需要知道这个GUID。程序里,全局变量strGUID就是这个服务GUID。

这个函数执行完毕,蓝牙服务器就建立完毕了。

2.5 发送数据

假定两部手机均运行了本程序。其中一部在主界面的下拉列表框(ID为I DC_DEVICES)中选择另一部做为服务器,在文本框(ID为IDC_SEND_MES SAGES)内输入文本,单击“Send”按钮(ID为IDC_SEND),都执行了哪些代码呢?

单击“Send”按钮,系统将调用MainDlgProc(?,WM_COMMAND,IDC_SE

10

ND,?)。以下代码将被执行:

g_iSelectedDeviceIndex=SendMessage(GetDlgItem(hDlg, IDC_DEVICES), CB_GETCURSEL, 0, 0);

SendData(hDlg);

第一行代码将获得选中服务器的序号;第二行代码发送数据。

继续跟踪到SendData函数,有两行代码用来发送数据:

objBthUtils.SendMessageToServer(strGUID, szMessage,-1);

objBthUtils.SendMessageToServer(strGUID, szMessage, g_iSelectedDeviceI ndex);

第一行代码表示给本机发送数据,第二行代码表示给周围的蓝牙设备发送数据。

继续跟踪到 BthUtils::SendMessageToServer,它的简化代码很简单:

if(m_socketClient==INV ALID_SOCKET)

{

OpenClientConnection(strGUID, iSelectedDeviceIndex);

}

send (m_socketClient, (char *)szMessage, iLenMessage, 0);

就是如果没有连接服务器,就连接。然后给服务器发送数据。

OpenClientConnection用于连接服务器,第一个参数就是服务器的服务GU ID,第二个参数是服务器在扫描到的蓝牙设备中的序号,0表示扫描到的第一个设备,1表示第二个设备……-1表示连接自己。

继续跟踪代码到BthUtils::OpenClientConnection。连接自己和连接其它设备的不同之处在于服务器的地址:

if(iSelectedDeviceIndex==-1)

{

sa.btAddr=m_saClient.btAddr;

}

else

{

for (int iCount = 0 ;(m_pCurrentDevice)&&iCount!=iSelectedDeviceIn dex;m_pCurrentDevice=m_pCurrentDevice->NextDevice,iCount++);

11

sa.btAddr = m_pCurrentDevice->bthAddress;

}

sa.btAddr = m_pCurrentDevice->bthAddress就是将地址设定为服务器的地址。这个服务器地址由DiscoverDevices函数获得,放在一个链表里。根据序号,设置为相应服务器的地址。

sa.btAddr=m_saClient.btAddr; 就表示连接自己。m_saClient.btAddr就是服务器自己的地址。它是在线程函数BthUtils::ReadData里,通过accept函数获得的(注意第二个参数):

accept (functionInfo->m_socketServer, (SOCKADDR*)&(functionInfo->m_s aClient), &iSize);

客户端没有连接服务器之前,accept是阻塞的就是不会返回。但是第二个参数应该是已经被修改为本机蓝牙设备的地址。

2.6 接收数据

多线程BthUtils::ReadData一直在一个死循环中运行,它不断读取客户端发送来的数据,然后执行如下代码:

(*functionInfo->pCallBackFunction)(szMessage)

在本程序里,回调函数指向DisplayMessage,即执行DisplayMessage函数。它的重要代码如下:

PostMessage(GetDlgItem(g_hDlg, IDC_MESSAGES), LB_ADDSTRING,0, (LPARAM) szMessage);

就是给主线程寄送一条消息。主线程消息泵获取该消息后,会更新显示接收文本的ListBox(ID为IDC_MESSAGES)。

12

C程序代码大全

//根据半径计算圆的周长和面积#include const float PI=3.1416; //声明常量(只读变量)PI为3.1416 float fCir_L(float); //声明自定义函数fCir_L()的原型 float fCir_S(float); //声明自定义函数fCir_S()的原型 //以下是main()函数 main() { float r,l,s; //声明3个变量 cout<<"r="; //显示字符串 cin>>r; //键盘输入 l=fCir_L(r); //计算圆的周长,赋值给变量l s=fCir_S(r); //计算圆的面积,赋值给变量s cout<<"l="<

基于内点法的最优潮流计算

基于内点法的最优潮流计 算 Prepared on 24 November 2020

摘要 内点法是一种能在可行域内部寻优的方法,即从初始内点出发,沿着中心路径方向在可行域内部直接走向最优解的方法。其中路径跟踪法是目前最具有发展潜力的一类内点算法,该方法鲁棒性强,对初值的选择不敏感,在目前电力系统优化问题中得到了广泛的应用。本文采用路径跟踪法进行最优求解,首先介绍了路径跟踪法的基本模型,并且结合具体算例,用编写的Matlab程序进行仿真分析,验证了该方法在最优潮流计算中的优越性能。 关键词:最优潮流、内点法、路径跟踪法、仿真

目次

0、引言 电力系统最优潮流,简称OPF(Optimal Power Flow)。OPF问题是一个复杂的非线性规划问题,要求满足待定的电力系统运行和安全约束条件下,通过调整系统中可利用控制手段实现预定目标最优的系统稳定运行状态。针对不同的应用,OPF模型课以选择不同的控制变量、状态变量集合,不同的目标函数,以及不同的约束条件,其数学模型可描述为确定一组最优控制变量u,以使目标函数取极小值,并且满足如下等式和不等式。 {min u f(x,u) S.t.?(x,u)=0 g(x,u)≤0 (0-1)其中min u f(x,u)为优化的目标函数,可以表示系统运行成本最小、或者系统运行网损最小。S.t.?(x,u)=0为等式约束,表示满足系统稳定运行的功率平衡。g(x,u)≤0为不等式约束,表示电源有功出力的上下界约束、节点电压上下线约束、线路传输功率上下线约束等等。 电力系统最优潮流算法大致可以分为两类:经典算法和智能算法。其中经典算法主要是指以简化梯度法、牛顿法、内点法和解耦法为代表的基于线性规划和非线性规划以及解耦原则的算法,是研究最多的最优潮流算法, 这类算法的特点是以一阶或二阶梯度作为寻找最优解的主要信息。智能算法主要是指遗传算法和模拟退火发等,这类算法的特点是不以梯度作为寻优信息,属于非导数的优化方法。 因此经典算法的优点是能按目标函数的导数信息确定搜索方向,计算速度快,算法比较成熟,结果可信度高。缺点是对目标函数及约束条件有一定的限

老外喜欢的聊天工具

老外喜欢的聊天工具 世界上最远的距离,不是生与死。而是我找你,却找不到。找到了却不回应。。。沟通是人与人之间的桥梁,是连接人人与人关系的纽带。合理的沟通能促进关系的和谐,同时也是矛盾的润滑剂。因此,实时沟通显得格外重要.作为外贸人员,不要一味的跟客人谈生意,当然目的是这个。私下的问候,关心,沟通也是不可或缺的。很多老外不喜欢来回发邮件,那样速度慢,还得来回查看,因此很多在线的聊天工具就备受欢迎。下面我介绍几款来外喜欢的聊天软件及工具。(1)MSN,这个大家都很熟悉,算是很早的在线聊天工具了,并且有对应的邮箱,也是很方便的,我就不多说了。他在世界的地位,犹如QQ在中国的地位。但是现在MSN被SKYPE绑定了,有些地方必须得绑定SKYPE才能用。 (2)SKYPE.这是一款很潮流也很方便的聊天工具,除了网上聊天外,也可以语音,视频。他最大的功能就是可以绑定你的电话,可以方便你和朋友间的联系。如果你想给远在异国的客人和朋友打电话的话,不妨试试SKYPE。不过你得先到SKYPE官网,购买充值卡哦。 (3)Viber,相比来说这个更是高效快捷,用你的手机注册成功后,装上软件,同步到你的通讯录,跟微信差不多。你就可以跟远在国外的使用同类软件的朋友畅所欲言了,这个不需花费,只需流量,如果有WIFI那就免费了哦。相比而言,这个更加流畅,不收

3G网络或者WIFI的局限,普通流量就可以拥有高音质的服务。(4)Whatsapp,这个软件还是客户告诉我的,当时我在trade manager,问他最近如何,怎么联系不到。他最后说让我装个whatsapp,然后我把他的号码存到我的通讯录,同步一下,就和他对话了,发现真的很多人在用,在我通讯录里使用这个的大部分都是中东南美的,也有部分中国人。 (5)Facebook,脸谱网的登陆如果电脑必须需要翻墙软件的协助,否则无济于事。在上面可以看到客户的动态,有种QQ空间的感觉,很是全面,也可以跟客户连线对话,建立群组等。这真的是一个不错的交友网站哦,你还会看到可能认识的人,客户的朋友你也可以加上。还可以关键词搜索,然后加为好友。 (6)Twitter,和facebook基本差不多,慢慢熟悉就好了。多用用有益无害。 (7)QQ,Wechat.腾讯帝国的软件,现在很多老外也在用了,我的一个外国客户就是我在微信上面认识的,摇一摇,正好摇出来,最后慢慢谈着,客户也是他们本国的进口商,微信摇出来的感情。没事摇一摇,必能摇出大奖。 (8)Google Talk,google集团出的一般软件,就是很不稳定,非常慢。可以试试加好友。

网络英文聊天常用语

---问好--- 1,hiho=hola=yo=hi=hey=hellow=你好,大家好 2,wuz up=sup=what's up=(原意:怎么样你?/有什么事儿嘛?)也可作为问好用(当然是比较熟的两个人之间的问候),回答时有事说事,没事用"nothing/nothin much/not much/nm等回答就可以。 ---再见--- 1,cya=cu=see ya=see you=再见 2,laterz=later=cya later=see ya later=see you later=再见 3,gn=gn8=gnight=good night=晚安 4,nn=nite=晚安 说明:一般第一个人常说gnight/gn8,然后第二个人用nite,后面的用nn什么的都可以了。不要问我为什么,约定俗成而已。 ---惊叹赞扬--- 1,OMG=oh my god=我的天;我靠! 2,OMFG=oh my * ***ing god=我的老天;我靠靠; 3,wtf=what the * ***=怎么会事!?;我日!; 4,n1=nice 1=nice one=漂亮 5, pwnz=ownz=牛比!(例句:pwnz demo!;lefuzee ownz all the others!) 6,rullz=强!(例句:lefuzee rullz!;you guyz rull!!!) 7,you rock!=你牛比!(口语中常用,irc中偶尔能看到。) ---笑--- 1,lol=laughing out loud /laugh out loud=大笑 2,lmao=laughing my ass off=笑的屁股尿流 3,rofl=roll on floor laughing=笑翻天了 排序:hehe ---其他简写--- 1,FU=* *** you=*你;滚 2,STFU=Shut the * *** up!=他妈的给我闭嘴! 3,k=ok=okay=okie=好的,恩 4,sux=s uck的第3人称单数形势(例句:that sux)=sb;滥 5,gimme=give me=给我 6,xfer=transfer=传输 7,em=them=他们的宾格 8,thx=thanks=谢谢 9,happy bday=happy b-day=happy birthday!=生日快乐 10,dunno=dont know=不知道 11,kinda=a little bit=有点(例句:The game is kinda hard for me.i kinda think i should get it done as soon as possible.) 12,tho=though=虽然尽管(例句:That demo was very nice,kinda old tho.那个demo很不错,虽然有点老) 13,plz=please=请

C程序代码大全

C程序代码大全 This manuscript was revised on November 28, 2020

<=70) cout<<"Your grade is a C."<=60) cout<<"Your grade is a D."< main() { int n; cout<<"n="; cin>>n; if (n>=0 && n<=100 &&n%2==0) cout<<"n="< main() { int a,b,Max; .10 for(int i=1;i<=10;i++) cout<=1;j--) cout<

JAVA代码编写一简单网络聊天程序

要求:聊天室服务器、聊天室客户端;客户端之间可以聊天。 因为我是初级选手,想借此程序分析学习java,所以代码最好多一点注释... 分数有限,望大家不吝赐教!!问题补充: 需要图形用户界面哦,最好用swing组件 服务器端:采用多线程,可以向客户广播:当前聊天室人数,客户名称列表,客户进入离开提示; 客户端:可以设定昵称,性别,客户间可以私聊 服务器端: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.doczj.com/doc/3a18994313.html,.*; public class Server extends JFrame implements ActionListener{ JPanel contentPane; JLabel jLabel2 = new JLabel(); JTextField jTextField2 = new JTextField("4700"); JButton jButton1 = new JButton(); JLabel jLabel3 = new JLabel(); JTextField jTextField3 = new JTextField(); JButton jButton2 = new JButton(); JScrollPane jScrollPane1 = new JScrollPane(); JTextArea jTextArea1 = new JTextArea(); ServerSocket server = null; Socket socket = null;BufferedReader instr =null;PrintWriter os=null ; //Construct the frame public Server() { jbInit(); } class MyThread extends Thread{//该线程负责接受数据 public void run(){ try{ while(true){ this.sleep(100); instr= new BufferedReader(new InputStreamReader(socket.getInputStream())); if(instr.ready()){ //检查是否有数据 jTextArea1.append("客户端: "+instr.readLine()+"\n"); } } }catch(Exception ex){} }

移动互联网聊天工具分析报告

移动互联网IM服务市场分析报告 一、行业及市场格局分析 1、行业概况:统计表明,目前移动互联网用户MIM的使用率高达73%,如同IM在互联网用户中的渗透一样,很多用户都是通过朋友间告知而开始使用该业务的。对运营IM的服务商而言,这一业务的最大价值在于对用户的高度黏性。这是由三方面的业务特点决定的:一是MIM客户端可以占领用户的手机和PC桌面;二是用户对IM账号会形成依赖;三是用户的社交关系一旦与某一个IM 软件结合,就再难轻易地转用其他IM软件。因此,无论是互联网服务商还是移动运营商,都对MIM业务寄予了厚望。通过MIM业务实现移动互联网客户群的积累,并进一步实施客户流量的价值经营,包括对移动互联网业务组合的针对性营销和社区经营等。 中国移动的飞信业务是一款综合信息通信平台,截至2008年第三季度,飞信活跃用户已经超过2650万,在国内IM市场排名第二。最早,中国移动与腾讯合作推出移动QQ服务,在手机终端与PC QQ直接短信互通,让手机用户得到移动化的IM服务,从而让合作双方都得到了“相当不错”的业务收入。之后,在自营MIM业务“飞信”全面推出之际,2006年6月,中国移动向部分省公司下发通知,要求暂缓与提供互联网IM业务的SP续签移动梦网合作协议。目前,中国移动和腾讯实现了飞信和QQ平台的对接,飞信用户和QQ用户之间通过飞信QQ业务实现互通,该合作业务成为飞信的一项子业务。从中国移动推出飞信前后与腾讯移动IM业务合作的分分合合中,我们看到了移动运营商与IM服务商之间的竞合矛盾。那么,站在移动运营商的角度,面对MIM这样一个既有丰富的用户使用需求,又可以带来至关重要的用户黏性及收入的战略型业务,应该如何切入、应该如何处理与优势IM服务商之间的关系,是一个值得慎重考虑的大问题。 2、市场格局: 飞信:飞信是中国移动的综合通信服务,即融合语音(IVR)、GPRS、短信等多种通信方式,覆盖三种不同形态(完全实时的语音服务、准实时的文字和小数据量通信服务、非实时的通信服务)的客户通信需求,实现互联网和移动网间的无缝通信服务。飞信不但可以免费从PC给手机发短信,而且不受任何限制,能够随时随地与好友开始语聊,并享受超低语聊资费。飞信Fetion 2012 Beta为最高版本,中国移动飞信实现无缝链接的多端信息接收,MP3、图片和普通OFFICE 文件都能随时随地任意传输,让您随时随地都可与好友保持畅快有效的沟通,工作效率高,快乐齐分享!飞信还具备防骚扰功能,只有对方被您授权为好友时,

数控编程G、M、T、S代码大全(精选.)

数控机床标准G、M代码 一.准备功能字G 准备功能字是使数控机床建立起某种加工方式的指令,如插补、刀具补偿、固定循环等。G功能字由地址符G和其后的两位数字组成,从G00—G99共100种功能。JB3208-83标准中规定如下表: 代码功能 作用范 围 功能 代码 功能作用范围功能 G00 点定位 G50 * 刀具偏置0/- G01 直线插补 G51 * 刀具偏置+/0 G02 顺时针圆弧插补 G52 * 刀具偏置-/0 G03 逆时针圆弧插补 G53 直线偏移注销 G04 * 暂停 G54 直线偏移 X G05 * 不指定 G55 直线偏移Y G06 抛物线插补 G56 直线偏移Z G07 * 不指 定 G57 直线偏移XY G08 * 加速 G58 直线偏移XZ G09 * 减速 G59 直线偏移YZ G10-G16 * 不指定 G60 准确定位(精) G17 XY平面选 择 G61 准确定位(中) G18 ZX平面选择 G62 准确定位(粗) G19 YZ平面选择 G63 * 该丝 G20-G32 * 不指定 G64-G67 * 不指定 G33 螺纹切削,等螺距 G68 * 刀具偏置,内角 G34 螺纹切削,增螺距 G69 * 刀具偏置,外角 G35 螺纹切削,减螺距 G70-G79 * 不指定 G36-G39 * 不指定 G80 固定循环注销 G40 刀具补偿/刀具偏置 注销 G81-G89 固定循环 G41 刀具补偿--左 G90 绝对尺寸 G42 刀具补偿-- 右 G91 增量尺寸 G43 * 刀具偏置--正 G92 * 预置寄存 G44 * 刀具偏置--右 G93 进给率,时间倒数 G45 * 刀具偏置+/+ G94 每分钟进给 G46 * 刀具偏置+/- G95 主轴每转进给 G47 * 刀具偏置-/- G96 恒线速 度 G48 * 刀具偏置-/+ G97 每分钟转数(主轴) G49 * 刀具偏置0/+ G98-G99 * 不指定 注:*表示如作特殊用途,必须在程序格式中说明二.辅助功能字M

Java源代码___聊天室

Java 聊 天 室 制作人:_____杨永生_____ 制作时间:2012.9.26 目录 1本文简介 (2) 2聊天室截图与说明 (2) 2.1用Java编译: (2) 2.2服务器登录界面 (2) 2.3服务器窗口 (2) 2.4客服端登录界面 (3) 2.5客服端窗口 (3) 3服务器端 (6) 3.1MyServer()方法 (6) 3.2Login()方法 (10) 3.3Time()方法 (13) 4客户端 (14) 4.1MyClient()方法 (14) 4.2Login()方法 (18) 4.3Time()方法 (20)

1 本文简介 这是一个简单的Java聊天室,仅提供给一些刚学Java的学生做实验,本文也是仅供参考. 本文代码都有注释,希望读者能读懂代码,本实验内部还有一些错误,比如只能一条一条的发信息,不能连发,希望能解决本问题的朋友能给我发信息,我的QQ号就是百度号! 2 聊天室截图与说明 2.1 用Java编译: 本代码有七个类,放在六个java文件中,类名在下方希望读者自己观看, 2.2 服务器登录界面 要先运行服务器端的程序 用户名:y 密码:1 用户名密码可以自己设定点击确定可以登录,2秒后到服务端界面 2.3 服务器窗口

聊天室的IP为本机的网络虚拟IP,在任何电脑上都能用,端口应设置在1024以后, 2.4 客服端登录界面 和服务器端的登录一样 2.5 客服端窗口

当登录上后客服端就显示已经连接了,此时服务器端的窗口如下

由于本程序设计的不是很完整,具体的聊天要先从客服端开始: 在客服端输入一条聊天内容后按确定,在服务器端就可以收到信息,之后客户端不能输入了,要等待服务器端来信息后才能继续输入信息. 想要结束聊天,直接可以关闭窗口,也可以输入’bye’后断开聊天

潮流计算问答题

1.什么是潮流计算?潮流计算的主要作用有哪些? 潮流计算是根据给定的电网结构、参数和发电机、负荷等元件的运行条件,确定电力系统各部分稳态运行状态参数的计算。 对于正在运行的电力系统,通过潮流计算可以判断电网母线电压、支路电流和功率是否越限,如果有越限,就应采取措施,调整运行方式。对于正在规划的电力系统,通过潮流计算,可以为选择电网供电方案和电气设备提供依据。潮流计算还可以为继电保护和自动装置整定计算、电力系统故障计算和稳定计算等提供原始数据。 2.潮流计算有哪些待求量、已知量? (已知量: 电力系统网络结构、参数; 决定系统运行状态的边界条件 待求量:系统稳态运行状态 例如各母线上的电压(幅值及相角)、网络中的功率分布以及功率损耗等)通常给定的运行条件有系统中各电源和负荷点的功率、枢纽点电压、平衡点的电压和相位角。 待求的运行状态参量包括电网各母线节点的电压幅值和相角,以及各支路的功率分布、网络的功率损耗等。 3.潮流计算节点分成哪几类?分类根据是什么? (分成三类:PQ节点、PV节点和平衡节点,分类依据是给定变量的不同) PV节点(电压控制母线):有功功率Pi和电压幅值Ui为给定。这种类型节点相当于发电机母线节点,或者相当于一个装有调相机或静止补偿器的变电所母线。 PQ节点:注入有功功率Pi和无功功率Qi是给定的。相当于实际电力系统中的一个负荷节点,或有功和无功功率给定的发电机母线。 平衡节点:用来平衡全电网的功率。平衡节点的电压幅值Ui和相角δi是给定的,通常以它的相角为参考点,即取其电压相角为零。 一个独立的电力网中只设一个平衡节点。 4.教材牛顿-拉夫逊法及有功-无功分解法是基于何种电路方程?可否采用其它类型方程? 基于节点电压方程,还可以采用回路电流方程和割集电压方程等。但是后两者不常用。

盘点世界各大即时聊天工具

ICQ,互联网上最流行的即时信息传递软件。名称来自I seek you (我在找你),它支持在 Internet 上聊天、发送消息和文件等。作为IM软件领域的缔造者,不得不说它成就了一个辉煌。1996年7月成立的Mirabilis公司于同年11月推出了全世界第一款即时通讯软件ICQ(目前ICQ已经归AOL旗下所有),取意为"我在找你"--"I Seek You",简称ICQ。这款软件一经推出,即刻全球响应,凭借着前所未有的创意很快在全世界拥有了大批的用户,即使在当时互联网不太发达的亚洲,市场用户量也占到了70%,在国内更是占到了80%。但是到了现在,根据调查显示,国内如今的IM软件排名中ICQ只排到了第8位,差距竟如此之大。 QQ是深圳市腾讯计算机系统有限公司开发的一款基于Internet 的即时通信(IM)软件。腾讯QQ支持在线聊天、视频电话、点对点断点续传文件、共享文件、网络硬盘、自定义面板、QQ邮箱等多种功能。并可与移动通讯终端等多种通讯方式相连。1999年2月,腾讯正式推出第一个即时通信软件——“腾讯QQ”,QQ在线用户由1999年的2人到现在已经发展到上亿用户了,在线人数超过一亿。是目前使用最广泛的聊天软件之一。 MSN全称Microsoft Service Network(微软网络服务),是微软公司推出的即时消息软件,可以与亲人、朋友、工作伙伴进行文字聊天、语音对话、视频会议等即时交流,还可以通过此软件来查看联系人是否联机。微软MSN移动互联网服务提供包括手机MSN(即时通讯

Messenger)、必应移动搜索、手机SNS(全球最大Windows Live在线社区)、中文资讯、手机娱乐和手机折扣等创新移动服务,满足了用户在移动互联网时代的沟通、社交、出行、娱乐等诸多需求,在国内拥有大量的用户群。另外,msn还表示“忙啥呢”以及“美少年or 美少女”等的简称。 Google Talk是Google 的即时通讯方式,简称Gtalk。它可以进行文字google talk聊天以及电脑对电脑的语音连接通话。Google 此举进一步激化了它和雅虎,微软以及美国在线之间的竞争。 Google 网站已经推出了即时通讯软件的下载页面提供windows平台下的客户端软件。另外有网上使用的小工具可在各种平台下使用。Google 宣称,该软件“可以让你与朋友随时随地,在世界的任何一个角落自由的通话,发送即时讯息。”Go ogle的即时通讯软件和它的电子邮件服务,Gmail进行了结合。 Gtalk的聊天记录可以自动保存到网上自己的Gmail信箱,可以随时随地的翻阅过去,这也是深受大家喜爱的一个功能。 雅虎通是由全球领先的互联网公司雅虎(Yahoo!)推出的即时聊天工具,是国际主流即时通讯工具之一,美国2007年即时通讯市场占有率排名第一,全球每天有超过5千万人次登录和使用雅虎通它拥有独特的聊天情景(IMViroment);语音聊天室,超级视频等等功能,它能让您与朋友、家人、同事及其他人进行趣味十足的即时交流。

C语言代码大全

------------------------------------------------------------------------摘自宋鲁生程序设计大赛 乘法口诀表 #include #include void main(void) { int i,j,x,y; clrscr(); printf("\n\n * * * 乘法口诀表* * * \n\n"); x=9; y=5; for(i=1;i<=9;i++) { gotoxy(x,y); printf("%2d ",i); x+=3; } x=7; y=6; for(i=1;i<=9;i++) { gotoxy(x,y); printf("%2d ",i); y++; } x=9; y= 6; for(i=1;i<=9;i++) { for(j=1;j<=9;j++) { gotoxy(x,y); printf("%2d ",i*j); y++; } y-=9; x+=3; } printf("\n\n"); }

用一维数组统计学生成绩 #include void main() { char SelectKey,CreditMoney,DebitMoney; while(1) { do{ clrscr(); puts("========================="); puts("| Please select key: |"); puts("| 1. Quary |"); puts("| 2. Credit |"); puts("| 3. Debit |"); puts("| 4. Return |"); puts("========================="); SelectKey = getch(); }while( SelectKey!='1' && SelectKey!='2' && SelectKey!='3' && SelectKey!='4' ); switch(SelectKey) { case '1': clrscr(); puts("================================"); puts("| Your balance is $1000. |"); puts("| Press any key to return... |"); puts("================================"); getch(); break; case '2': do{ clrscr(); puts("=================================="); puts("| Please select Credit money: |"); puts("| 1. $50 |"); puts("| 2. $100 |"); puts("| 3. Return |"); puts("=================================="); CreditMoney = getch(); }while( CreditMoney!='1' && CreditMoney!='2' && CreditMoney!='3' ); switch(CreditMoney)

java版基于UDP协议网上聊天程序课程设计

湖南工业大学 课程设计 资料袋 计算机与通信学院学院(系、部)2013 ~ 2014 学年第 1 学期课程名称网络协议分析指导教师李建设职称副教授 学生姓名专业班级网络工程学号 题目基于UDP协议网上聊天程序 成绩起止日期2013 年11 月25 日~2013 年12 月13 日 目录清单

5 6 课程设计任务书 2013 —2014学年第1 学期 学院(系、部)计算机与通信学院专业网络工程班级102 课程名称:网络工程学生姓名: 设计题目:基于UDP协议网上聊天程序指导教师:李建设 完成期限:自2013 年11 月25 日至2013 年12 月13 日共 3 周 容 及 任 务 一、设计内容 实现一个基于UDP协议的简单的聊天程序,包括服务器和客户端。 1.支持多人聊天。 2.客户端具有图形化用户界面。 二、设计任务 课程设计说明书(纸质+电子版),内容包括:设计内容、系统分析(包括可行性分析、需求分析等)及功能分析;系统设计(要求画出系统整体功能框图、流程图、并给出相应地关键的代码且对所使用的主要数据结构进行说明等。)、设计总结(评价/遇到的问题/体会/建议等)、使用说明等。 三、设计要求 1.按功能要求开发系统,能正确运行。程序代码书写规范,有充足的注释。 2.课程设计所使用的编程语言任选,但建议使用C或C++; 3.绿色软件:程序运行不需安装,避免写系统和注册表; 进 度 安 排 起止日期工作内容 2013-11-25~2013-11-3 选题 2013-12-1~2013-12-3 系统分析和设计; 2013-12-4~2013-12-8 熟悉软件开发工具、编码系统、系统测试 2013-12-9~2013-12-13 撰写并提交课程设计说明书(含电子文档)、源程序等。

潮流计算的基本算法及使用方法Word版

潮流计算的基本算法及使用方法 一、 潮流计算的基本算法 1. 牛顿-拉夫逊法 1.1 概述 牛顿-拉夫逊法是目前求解非线性方程最好的一种方法。这种方法的特点就是把对非线 性方程的求解过程变成反复对相应的线性方程求解的过程,通常称为逐次线性化过程,就是牛顿-拉夫逊法的核心。 牛顿-拉夫逊法的基本原理是在解的某一邻域内的某一初始点出发,沿着该点的一阶偏 导数——雅可比矩阵,朝减小方程的残差的方向前进一步,在新的点上再计算残差和雅可矩阵继续前进,重复这一过程直到残差达到收敛标准,即得到了非线性方程组的解。因为越靠近解,偏导数的方向越准,收敛速度也越快,所以牛顿法具有二阶收敛特性。而所谓“某一邻域”是指雅可比方向均指向解的范围,否则可能走向非线性函数的其它极值点,一般来说潮流由平电压即各母线电压(相角为0,幅值为1)启动即在此邻域内。 1.2 一般概念 对于非线性代数方程组 ()0=x f 即 ()0,,,21=n i x x x f ()n i ,2,1= (1-1) 在待求量x 的某一个初始计算值() 0x 附件,将上式展开泰勒级数并略去二阶及以上的高 阶项,得到如下的线性化的方程组 ()()()() ()0000=?'+x x f x f (1-2) 上式称之为牛顿法的修正方程式。由此可以求得第一次迭代的修正量 ()() ()[]()()0 1 00x f x f x -'-=? (1-3) 将() 0x ?和() 0x 相加,得到变量的第一次改进值()1x 。接着再从() 1x 出发,重复上述计算 过程。因此从一定的初值() 0x 出发,应用牛顿法求解的迭代格式为 ()()()()() k k k x f x x f -=?' (1-4) ()()()k k k x x x ?+=+1 (1-5) 上两式中:()x f '是函数()x f 对于变量x 的一阶偏导数矩阵,即雅可比矩阵J ;k 为迭代

即时聊天工具

一:腾讯QQ 【简介】:腾讯公司成立于1998年的11月12日,次年即1999年2月就推出了仿照ICQ软件的中国版IM工具OICQ,它可以说是QQ的前生。时至今日,腾讯已经成为中国软件行业的巨无霸,QQ的大名更是无人不知,没人不晓,差不多每个网友都拥有一个QQ号。至于说腾讯QQ为什么能取得如此辉煌的成功,应该是一半靠的是实力,另一半靠的是运气。 【特色】:说老实话,腾讯QQ最大的特色也是其最大的优势,应该就是其无比庞大的用户数量。而就它的功能来说,可以说是青出于蓝而胜于蓝,并且已经到达了一个相对的顶峰。其操作简单,支持实时的音视频聊天,支持大文件传输、深入人心的群功能,以及精彩的在线游戏等多种增值功能,让它已经成为了一个时代的标志! 点评】:QQ可以说是中国IT行业的骄傲,它功能强大丰富、操作简单而易用,娱乐性很强,它的身影已经遍布中国的大街小巷。对很多人来说,上QQ、玩QQ已经成为生活的一部分。虽然它有很多收费项目让不少用户一直抱怨,但真的想要离开它却发现又不是那么容易的事情! 二:微软MSN(Windows Live Message) 【简介】:微软公司创建于1975年,是全球最大的电脑

软件提供商,得益于Windows系列操作系统,使其成为全球软件行业的霸主。它的软件产品众多,1999年7月推出了网络即时信息客户程序MSN Messenger。目前MSN(从8.0开始新版本改名为Windows Live Message)可以说是国外IM领域最为流行的IM客户端之一,而在中国它的市场份额也一直处于前列,但却始终无法超越QQ。 【特色】:MSN是一种优秀的即时通信工具,它基于Microsoft 高级技术,可使您和您的家人更有效地利用 Web进行通信。目前MSN Messenger的最新版本是Windows Live Messenger 2009,它仍包含您所喜爱的Messenger 的一切功能:如联系人名单、图释以及使用文本、声音和视频与您的朋友即时联系。此外,它还提供了轻松连接并共享照片和文档的新方式。可惜,Windows Live Messenger中用户无法进行好友查找;【点评】:和QQ不同,MSN的特色之处在于它的严肃和保守性,这使得它更受企业用户所青睐,同时这也使得它的用户群更集中在公司的白领职员中,而这也是MSN的市场占有率始终停步不前无法超越QQ的主要原因。并且它的界面及操作和QQ相比风格差别比较明显。而新版的Windows Live Messenger为了打破这种局面,加入了更多有趣功能,但就娱乐性而言仍然无法和QQ相提并论; 三:百度Hi

C 经典程序代码大全

C 经典程序代码大全 #include const float PI= 3.1416; //声明常量(只读变量)PI为 3.1416 float fCir_L(float); //声明自定义函数fCir_L()的原型 float fCir_S(float); //声明自定义函数fCir_S()的原型 //以下是main()函数 main() { float r,l,s; //声明3个变量 cout>r; //键盘输入 l=fCir_L(r); //计算圆的周长,赋值给变量l s=fCir_S(r); //计算圆的面积,赋值给变量s cout=0.0) //如果参数大于0,则计算圆的周长 z=2*PI*x; return(z); //返回函数值 } //定义计算圆的面积的函数fCir_S() float fCir_S(float x) { float z=- 1.0; //声明局部变量 if (x>=0.0) //如果参数大于0,则计算圆的面积 z=PI*x*x; return(z); //返回函数值 } /* Program: P1- 2.CPP Written by: Hap Date written: 02:11:10 */ #include void main(void) { double s1,s2,s3; s1= 1.5; /* 对变量s1赋值*/ cout main() { double r=

1.0; cout>r; //键盘输入 l=2* 3.1416*r; //计算圆的周长,赋值给变量l cout //包含iostream.h头文件 void main() { //输出字符常量.变量和字符串 char c1= A ; cout //包含iostream.h头文件 main() { //输入输出字符 char c; cin>>c; cout>n; cout>x; cout>n; cout>c>>n>>x; cout //包含iostream.h头文件 main() { //声明整型变量 int a,b; //从键盘上为整型变量赋值cout>a; cout>b; //整型数的算术运算 cout //包含iostream.h 头文件 main() { //声明变量,并初始化 int a=010,b=10,c=0X10; //以进制形式显示数据 cout>a; cout>b; cout>c; cout //包含iostream.h头文件 #include // iomanip.h头文件包含setprecision()的定义 main() { //float型变量的声明.输入.计算和输出 float fx,fy; cout>fx; cout>fy; cout>dx; cout>dy; cout //包含iostream.h 头文件 main() { //字符类型变量的声明 char c1= A ; char c2; //字符数据的运算及输出 c2=c1+32; cout>c1>>c2; cout //包含iostream.h头文件 main() { char c1= \a ,TAB= \t ; //阵铃一声 cout //包含iostream.h头文件 main()

基于JAVA局域网聊天程序设计与实现(附源代码)

局域网聊天课程设计 摘要 随着互联网的发展,网络聊天工具作为一种交流工具,已经受到网民的青睐。目前,出现了很多功能强大的聊天工具,其中应用比较广泛的有腾讯QQ、MSN-Messager等等。 即时通讯软件,是每一个上网用户都需要的工具,它除了能够让您迅速地在网上找到自己的朋友和伙伴之外,还可以实时交谈和传递信息,截止到目前,全球约有近3亿多人使用即时软件,正因为即时通讯软件拥有数以亿计的用户和增长的市场,所以各个公司都盯上了这个最大的市场,一时间,即时通讯市场硝烟四起。 对等网络(peer-to-peer,简称P2P),应用最初出现时和现在并不相同。事实上可以认为它是若干不同技术以及流行趋势相结合的产物。以下是导致P2P技术发展最重要的趋势:首先,一些新技术与软件工程的结合,形成了一种将工作分散的趋势。P2P计算正是这种分散工作趋势的结果。其次,在企业应用集成等因素的驱动下,过去十年渐渐形成从集中的单机系统转向分布式系统。然而随着互联网的发展,全面的分布式计算也就成为一种迫切需求。 关键词:局域网聊天 P2P java

Abstract With the development of the Internet,the chat tool as a communication tool, has been popularly accepted by netizens of all ages. At present, there are many powerful chat tools, of which Tencent QQ, MSN-Messager are much more prevalent. Instant messaging software is necessary for every one who connects to the internet, which can not only provide you a prompt way to find friends and partners online, but can provide you the convenience of internet relay chat and information delivering. Up to now, there are about 300 million people using real-time software all over the world. As more and more corporations have focused on this market with growing potential, which has hundreds of millions of uses, the competitions among these corporations are extremely fierce. The initial application of peer-to-peer network (peer-to-peer, referred to as P2P) is not the same as it is now. In fact, it can be regarded as a combination of different technologies and fashion trends. Below are the most important trends that have led the development of P2P technology: First of all, the integration of software engineering and new technologies led to a working dispersion trend. As a result, P2P computing was born. Then, in the past decade, it has turned fro m a single centralized system to distributed system due to the motivation of factors such as enterprise application integration. At last, with the development of the Internet, however, a comprehensive distributed computing has become an urgent need. Keywords:LAN chat P2P java

相关主题
文本预览
相关文档 最新文档