文档库 最新最全的文档下载
当前位置:文档库 › 基于socket的聊天程序设计与实现

基于socket的聊天程序设计与实现

基于socket的聊天程序设计与实现
基于socket的聊天程序设计与实现

基于socket的聊天程序设计与实现学生姓名:XXXXXXXX 指导老师:XXXXXXXXXXXX

摘要本设计在WINDOWS平台上,以C语言为编程语言,实现局域网内的即时通信工功能即聊天的功能。本设计是基于Windows Socket的编程,分别在同一局域网内的两台PC机的VC++ 6.0平台上运行服务端和客户端程序。服务器与客户端在Windows7 环境下采用了TCP/IP连接方式,由客户端登录到服务端PC机,实现客户端与服务端PC的信息传输。

关键词socket;C语言;TCP/IP;程序设计;VC++6.0

1 引言

近年来,随着全球信息化进程的不断发展,网络也在飞速发展。出于高效、快速地处理各种事务的目的,越来越多的企业在其内部使用局域网来进行工作。在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。然而,随着企业规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。这些在企业内部原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪重负,容易发生信息阻塞,此时,局域网不但不能提高生产效率,反而成为企业发展的瓶颈。

为了解决上述矛盾,人们提出了许多方法。提升网络带宽及增加服务器的吞吐能力是解决此矛盾的一种方法。然而,从企业运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加企业的负担。

基于Socket的局域网通信软件可以为企业原有的局域网提供一种良好,安全,快速的通信机制。它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,它的使用能有效地降低局域网通信负荷,提高局域网的使用效率,可以很好地解决企业内部局域网的各种通信需求。

基于Socket的局域网聊天工具是此类局域网通信软件的具体实例之一,它很好地诠释了Socket通信的原理,并且在企业内部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。

基于Socket的局域网通信软件应用范围广阔,不但可以处理传统的通信需求,而且也能扩展以适应新型的网络应用,如网络教育,数据影音传输等,拥有广泛的应用前景。

1.1 课程设计目的

了解基于socket的程序设计方法,增强程序编写能力,加深对计算机网络通信的理解。另外,通过课程设计培养学生严谨的科学态度,认真的工作作风、团队协作精神、自主设计和独力思考的能力。使同学们学会文献检索的基本方法和综合运用文献的能力。

1.2 设计平台

网络:局域网。

操作系统:Windows 7。

VC++6.0简介:

VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。MFC中封装了大部分Windows API 函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需

的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC++提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。

2 设计原理

程序采用Windows Socket编程,利用MFC类库中,对Windows Socket API 进行了封装的CAsyncSocket类及其子类CSocket中提供的成员函数,完成网络的连接以及对字符消息的传送。

2.1 win32编程原理

所谓的Win32开发,就是在C语言的层面上,直接使用Win32 API开发Windows应用程序或者系统程序。虽说现在直接用Win32 API开发应用程序的人已经不多了,但是深入理解Windows系统程序设计原理,仍然是成为Windows 开发高手的良好途径。所谓的Win32,其实是一个API规范,与UNIX系统编程接口标准POSIX是相对应的。下面是进行直接的WIN32 SDK方式编程的基本思路或者说是一个框架:

一个WINDOWS程序分为程序代码和UI(User Interface 用户接口)资源两大部份,两部份最后以RC编译程序整合为一个完整的EXE文件。所谓UI资源是指功能菜单、对话框、程序图标、光标形状等等东西。这些UI资源的实际内容(二进制代码)系借助各种工具产生,并以各种扩展名存在,如 .ico .bmp .cur等等。程序员必须在一个所谓的资源描述档(.rc )中描述它们。RC编译器( RC.EXE )读取RC 文件的描述后将所有UI资源文件集中制作出一个.RES 文件,再与程序代码结合在一起,这才是一个完整的 Windows可执行文件。

与控制台程序相同的是,一个WIN32程序也必须有一个程序入口点,但是在这儿它不再叫main(),而叫做WinMain(),当WINDOWS的SHELL检测到用户欲执行一个EXE程序,就会调用加载器把程序进行加载,然后调用C startup code,后者再调用WinMain(),程序的执行就开始了,WinMain()函数的原型为:int

CALLBACK WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow);

2.2 TCP/IP协议简介

TCP/IP协议实际上就是在物理网上的一组完整的网络协议。其中TCP是提供传输层服务,而IP则是提供网络层服务。TCP/IP主要包括以下协议:IP:网间协议(Internet Protocol) 负责主机间数据的路由和网络上数据的存储。同时为ICMP,TCP,UDP提供分组发送服务。用户进程通常不需要涉及这一层。

ICMP:网间报文控制协议(Internet Control Message Protocol)此协议处理网关和主机的差错和传送控制。

TCP:传输控制协议(Transmission Control Protocol)这是一种提供给用户进程的可靠的全双工字节流面向连接的协议。它要为用户进程提供虚电路服务,并为数据可靠传输建立检查。TCP/IP协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物

2.3 WINDOWS SOCKETS网络编程接口概述

在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型。在这种方案中客户应用程序向服务器程序请求服务。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户向这个服务的地址提出了连接请求。在这个时刻,服务程序被"惊醒"并且为客户提供服务-对客户的请求作出适当的反应。

为了方便这种Client/Server模型的网络编程,90年代初,由Microsoft 联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows 下的网络编程接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议。

Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具

有Socket接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。

微软为Visual C++定义了Winsock类如CAsyncSocket类和派生于CAsyncSocket 的CSocket类,它们简单易用,我们当然可以使用这些类来实现自己的网络程序,但是为了更好的了解Winsock API编程技术,本设计中将使用底层的API函数实现 Winsock 平台的即时通信工具。

在VC中进行WINSOCK的API编程开发的时候,需要在项目中使用下面的三个文件,否则会出现编译错误。

(1) WINSOCK.H: 这是WINSOCK API的头文件,需要包含在项目中。

(2) WSOCK32.LIB: WINSOCK API连接库文件。

(3) WINSOCK.DLL: WINSOCK的动态连接库,位于WINDOWS的安装目录下。

3 详细设计与实现

3.1客户端

连接模块设计:客户端计算机获取本机开放的socket端口23,再发送目标主机的IP,通过connection()函数与服务端建立连接,如果connection()作用结果出现错误的socket,则连接失败,否则通过recv()函数接收服务器发送的字符串,即为服务器发送的欢迎信息。模块程序如下:

……

int connection()

{

WSAreturn = WSAStartup(0x101,&WSAData); //始化一个WSADATA结构

if(WSAreturn)

{

printf("发生一个未知错误!\n");

return 0;

}

//创建一个套接口。

//第一个参数:一个地址描述。目前仅支持AF_INET格式,也就是说ARPA Internet地址格式。

//第二个参数:新套接口的类型描述。( SOCK_STREAM 可用send()和recv()传送数据)

//第3个参数:套接口所用的协议。如调用者不想指定,可用0

client = socket(AF_INET,SOCK_STREAM,0);

to.sin_family = AF_INET;

//sin_port存储端口号(使用网络字节顺序)

to.sin_port = htons(23);

while(TRUE)

{

printf("请输入要登陆的IP:");

scanf("%s",&servername);

//sin_addr存储IP地址,使用in_addr这个数据结构

to.sin_addr.s_addr = inet_addr(servername);

printf("正在连接...\n");

result = connect(client,(struct sockaddr *)&to,sizeof(to));

if(SOCKET_ERROR==result)

{

// 连接失败

printf("对不起,无法连接到目标主机!\n");

WSACleanup();

return 0;

}

else

{

cansend=FALSE;

recv(client,receive,sizeof(receive),0);

printf("*******欢迎消息消息*******\n");

printf("%s\n",receive);

printf("***********结束*********\n");

……

信息发送与接收模块设计:分别利用send()函数和recv()函数发送和接收信息。模块程序如下:

……

scanf("%s\0",&chatto);

send(client,chatto,strlen(chatto),0);

……

recv(client,chatfrom,sizeof(chatfrom),0);

printf("%s\n",chatfrom);

3.2服务端

连接用户模块设计:通过GetIp()函数获得客户端IP,然后开放一个端口,绑定并监听端口。接受来自客户端的连接,并向客户端发送欢迎信息。与客户端建立连接。模块程序如下:

……

int GetIp()

{

WSAreturn = WSAStartup(0x101,&WSAData);

if(WSAreturn)

{

printf("发生一个未知错误!\n");

return 0;

}

local.sin_family = AF_INET;

local.sin_addr.s_addr = INADDR_ANY;

local.sin_port = htons((u_short)23);

server = socket(AF_INET,SOCK_STREAM,0);

if(server==INVALID_SOCKET )

{

printf("无法创建套接字!\n");

return 0;

}

if(bind(server,(struct sockaddr *)&local,sizeof(local))!=0) {

printf("无法绑定套接字!\n");

return 0;

}

if(listen(server,5)!=0)

{

printf("无法监听端口!\n");

return 0;

}

while(TRUE)

{

printf("正在等待用户连接...\n");

client = accept(server,(struct sockaddr *)&from,&fromlen); strcpy(information,inet_ntoa(from.sin_addr));

strcat(welcome,information);

printf("接受来自%s的连接...\n",inet_ntoa(from.sin_addr)); printf("正在发送欢迎消息...\n");

send(client,welcome,strlen(welcome),0);

//send(client,ip,strlen(ip),0);

//send(client,information,strlen(information),0);

printf("欢迎消息信息已经成功发送至客户端!\n");

……

信息发送与接收模块设计:分别利用send()函数和recv()函数发送和接收信息。模块程序如下:

……

recv(client,receive,sizeof(receive),0);

printf("%s\n",receive);

……

scanf("%s\0",&chat);

send(client,chat,strlen(chat),0);

……

4 运行结果

在局域网内的一台PC机的VC++6.0 平台上运行服务端程序,并与客户端PC 机之间通信。程序运行窗口如下图所示:

图4.1 服务端程序运行后的聊天窗口

在同一局域网内的另一台PC机的VC++6.0 平台上运行服务端程序,并与客户端PC机之间进行通信。程序运行窗口如下图所示:

图4.2 客户端程序运行后的聊天窗口

5出现问题及解决方法

在编写服务端和客户端程序时,始终出现链接错误。错误提示如:

error LNK2001: unresolved external symbol __imp__closesocket@4。

Debug/00.exe : fatal error LNK1120: 9 unresolved externals

Error executing link.exe.

其问题在于缺少一句连接到库的语句。因此,其解决办法是在程序开头添加一条连接到库的语句即可。

6结束语

两个星期的时间很快就过去了,计算机网络课程设计也即将结束.在这两个星期里,有过不少的艰辛和疑惑,我从刚开始的无从下手到最后的顺利完成,我又一次体验了自我设计的满足感.

课程设计刚开始,当老师把题目布下来的时候,我疑惑了许久,在此之前我很少接触基于socket的程序设计,因而对于这个题目我感到无从下手,但是通过老师的指导和本人上网查阅资料后,我对基于socket的程序设计有了大概的了解.但与此同时另一个问题也正困扰着我,那就是我该先择什么语言设计这个聊天程序来实现聊天功能呢.据指导老师介绍, 对基于socket的设计,任意的编程语言可以适用.由于通信专业所学编程语言比较少,再加上本人对C和C++语言编程了解的要多一些.因此,尽管用C语言编起来比较繁琐,但是我还是先择了C语言。选择设计语言后,稍微复习了C语言的一些知识,尽管这样,但我还是没有比较清楚的设计思.因此,我还不断地查阅资料,学习别人的设计思路和方法,然后结合自己的想法将程序不断地完善.这样我的设计工作得以顺利地进行。

设计完成后,还有一个重要的工作就是论文的编写.由于在此之前我们已经完成过若干个课程设计论文,因此我对论文的编写也有了较丰富的经验,在排版和格式方面都已经相当熟悉,所有论文的编写也是完成得比较的顺利.

在这两个星期的课程设计中, 与其说是完成设计,我更觉得这是一个学习的过程。在设计过程中,我有很多的知识不懂或者已经淡忘了,但是通过求教于老师和同学,并勤于查阅资料,我又学到了很多的知识。本人真切地感受到此次课程设计带给我的学习动力与兴趣.我相信有了这些,将会对我以后的专业知识学习更加有利.

此次课程设计的顺利完成,还归功于老师殷切的指导和无私的帮助。在此,我向老师们表示衷心地感谢!

参考文献

[1] 杨路明. C语言程序设计. 北京:北京邮电大学出版社,2005

[2] 谢希仁. 计算机网络. 北京:电子工业出版社,2008

最新简单聊天系统的设计与实现

JISHOU UNIVERSITY 专业课课程论文 简单聊天系统的设计与实现题目: 作者: 学号: 所属学院:信息科学与工程学院 专业班级: 总评分: 完成时间: 吉首大学信息科学与工程学院

简单聊天系统的设计与实现 (吉首大学信息科学与工程学院,湖南吉首 416000) 摘要 网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一聊天室的人们通过广播消息进行实时交谈。在当今信息时代,越来越多的聊天工具被应用,java语言是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承,锻炼我们熟练地应用面向对象的思想和设计方法解决实际问题的能力。本程序正是用java 语言实现了简单聊天功能。它是图形界面,线程,流与文件系统等技术的综合应用。其界面主要采用了java.awt 包,java.swing 包等。 关键词:网络聊天室;java;面向对象;通信机制;图形界面

目录 第一章引言1 第二章关键技术 (2) 2.1开发技术 (2) 2.1.1什么是Java (2) 2.1.2主要特性 (2) 2.1.3 Java中的布局 (3) 2.2 开发工具 (3) 2.2.1 Eclipse (3) 2.2.2 SQL Sever数据库 (3) 第三章需求分析 (4) 3.1可行性分析 (4) 3.1.1 经济可行性 (4) 3.1.2 操作可行性 (4) 3.1.3 技术可行性 (4) 3.2功能分析 (4) 3.2.1 注册 (4) 3.2.2 登录 (5) 3.2.3 私聊 (5) 第四章概要设计 (6) 4.1系统总体结构 (6) 4.2数据库设计 (6) 第五章详细设计 (8) 5.1登录模块设计 (8) 5.2注册模块设计 (9) 5.3消息格式化设计 (10) 5.4 界面设计 (10) 5.4.1 登录界面 (10) 5.4.2 注册界面 (11) 5.4.3 聊天界面 (11) 结束语 (12) 参考文献...... (123)

基于java socket的聊天室项目文档

北京邮电大学软件学院 2010-2011 学年第 1学期实训项目文档 (每个项目小组一份) 课程名称:全日制研究生实训 项目名称:通信软件实训 项目完成人: 姓名:学号: 姓名:学号: 姓名:学号: 姓名:学号: 姓名:学号: 姓名:学号: 指导教师: 日期:2011年1月21日

基于java socket的聊天室实现 一 . 实训项目目的和要求(说明通过本项目希望达到的目的和要求) 目的:熟练掌握socket编程原理,并用java socket实现聊天室 要求:实现p2p和聊天室功能 二 . 实训项目开发环境(说明本项目需要的环境) 开发工具:Eclipse SDK Version: 3.5.2 和NetBeans 6.9.1 版本 系统:win7 三 . 实训项目内容(说明本项目的内容,如:问题分析、设计方案、算法、设计图等) 1.问题分析 网络编程中两个主要的问题一个是如何准确的定位网络上一台或多台 主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协 议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一 地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的 或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要 关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务 器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。 客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运 行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户, 同时自己继续监听服务端口,使后来的客户也能及时得到服务。 两类传输协议:TCP;UDP。TCP是Tranfer Control Protocol的简称, 是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个 顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或 接收操作。

基于ANDROID的socket聊天室服务器

package com.Server; import java.io.*; import https://www.wendangku.net/doc/8a8501844.html,.*; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; import javax.swing.JOptionPane; public class Server { ServerSocket ss = null; private String getnameString=null; boolean started = false; List clients = new ArrayList(); public static void main(String[] args) { String inputport = JOptionPane.showInputDialog("请输入服务器所用的端口:"); int port = Integer.parseInt(inputport); new Server().start(port); } public void start(int port) { try { ss = new ServerSocket(port); System.out.println("服务器启动"); started = true; } catch (BindException e) { System.out.println(" 端口已经被占用"); System.exit(0); } catch (IOException e) { e.printStackTrace(); } try { while (started) { Socket s = ss.accept(); Client c = new Client (s); System.out.println("a client is connected"); new Thread(c).start(); clients.add(c); } } catch (IOException e) {

网络聊天系统的设计与实现

本科生毕业论文(设计) 题目:网络聊天系统的设计与实现学习中心: 层次:专科起点本科 专业: 年级:年春/秋季 学号: 学生: 指导教师: 完成日期:年月日

网络聊天系统的设计与实现 内容摘要 随着互联网技术的飞速发展,网络已经成为人们生活中不可缺少的一部分,通过网上聊天已经成为人与人之间的网络通信的聊天,交流和联系的一种方式。 因此,更多的网站开始提供在线聊天功能。与此同时,以其方便,快捷,成本低的优势,聊天室众多企业的青睐,许多企业网站也加入了聊天室,从而促进消费者与消费者和消费者之间的通信模块。 本文是一个软件工程的在线聊天系统,专注于系统的开发,使用系统的分析,设计和思维测试软件工程知识来实现的描述,其中包括三个主要方面的软件生命周期:软件定义(问题定义,可行性研究,需求分析),软件开发(总体设计,详细设计,编码,测试)和运行维护。通过运用软件工程知识处理实际,加强的问题,清晰,可靠的标准化,使得程序易于维护。该软件使用JAVA编写,具有良好的兼容性,易于实现。操作简单,使用方便结构简单,易于搜索,实用的聊天室。 关键词:网络;通信;套接字 I

网络聊天系统的设计与实现 目录 内容摘要 ............................................................................................. I 引言.. (4) 1 概述 (5) 1.1 课题研究背景和意义 (5) 1.2 本文的主要内容及组织结构 (5) 2 网络应用系统开发技术介绍 (7) 2.1 TCP/IP协议概述 (7) 2.2 客户/服务器模型 (7) 2.3 Socket网络编程 (7) 2.4 开发工具与运行环境 (8) 2.5 其他技术 (8) 3 网络聊天系统的分析与设计 (10) 3.1 可行性分析 (10) 3.2 需求分析 (10) 3.3 系统总体设计 (11) 3.3.1 系统架构模型 (12) 3.3.2功能模块设计 (12) 3.3.3系统通信设计 (12) 3.3.4数据库设计 (13) 4 网络聊天系统详细设计及实现 (14) 4.1 服务器端设计与实现 (14) 4.1.1 服务器等待连接进程/线程设计 (15) 4.1.2 服务器处理客户端信息进程/线程设计 (16) 4.2 客户端设计与实现 (16) 4.2.1 登陆模块 (16) 4.2.2 主界面模块 (16) 4.2.3 私聊模块 (19) 4.2.4 聊天记录管理模块 (21) II

基于Socket网络聊天系统的设计与实现

摘要 随着Internet的飞速发展,网络聊天以其操作简单、方便快捷、私密性好等优点已经迅速发展成为最普遍的网络交流方式之一,越来越受到人们的青睐,丰富了人们的网上生活。开发并实现具有自身特色的网络聊天系统具有实际应用价值。 本网络聊天系统基于Java应用程序设计,以Client/Server为开发模式,以Eclipse为开发环境,以MySQL为后台数据库,利用JDBC连接数据库。系统主要包括服务器模块和客户端模块,服务器模块能够对客户端发来的用户信息进行匹配、读取和转发;客户端模块能够进行注册、登录、聊天和文件传输。系统不但实现了点到点的聊天,还利用Java提供的Socket类和多线程功能,在单个程序中同时运行多个不同进程,从而实现多点对多点的聊天。 总之,该聊天系统具有开放性,实时性,多话题交错等特点,方便了人们网上交流。 【关键词】网络聊天服务器模块客户端模块 Socket

ABSTRACT With the rapid development of Internet, network chat with its simple operation, convenient and gond privacy has quickly become the most popular way of communication networks, more and more people like it, enrich people's online lives. Development and Realization of the network chat system with its own characteristics and has practical application value. The Internet chat system is based on Java application, designed by Client / Server as the development of models, as Eclipse development environment, MySQL as the backend database, and using JDBC to connect database. The system includes server modules and client modules, server module can match users'data, read and forward the information which is sent by client; client module to regist, login, chat and file transfer. The system not only achieves peer-to-peer chat, but also use the Java provids Socket class and multi-threading capabilities, in a single program run different processes at the same time, in order to achieve multipoint chat. In short, the chat system is open, real-time and multi-topic staggered features, easy for people to communicate online. 【Key words】Network Chat Client Module Server Module Socket 目录

JavaSocket实现多人聊天室

Java Socket实现多人聊天室---swing做UI 标签:socket聊天javaexception服务器string 2011-08-31 15:0620679人阅读评论(25)收藏举报分类: java(21) 版权声明:本文为博主原创文章,未经博主允许不得转载。 今天翻硬盘的workspace发现一个Java Socket实现多人聊天室的源码,不记得是什么时候的事情了,貌似不是我写的。但写得还不错, 至少算个有模有样的聊天室工具。我简单的修改了一下,拿出来跟大家分享一下,仅供参考。。。 界面是用swing写的,还不懒,简约大方。有图有真相:

正如上图所示,这个程序分为服务器端和客户端,说白了就是两个main class,用eclipse 直接运行之。。。。。 聊天室的设计思想是:在局域网下,利用socket进行连接通信,当服务器端启动的时候,利用Thread线程不停的等待客户端的链接;当有客户端开启连 接的时候,服务器端通过IO流反馈“上线用户”信息给客户端,客户端也使用线程不停的接收服务器的信息,从而实现多人在线聊天功能。 程序中有三个类,分别Server.java(服务器端)、Client(客户端)、User.java(javabean)。代码如下: Server.java(服务器端): [html]view plaincopy 1.import java.awt.BorderLayout; 2.import java.awt.Color; 3.import java.awt.GridLayout; 4.import java.awt.Toolkit; 5.import java.awt.event.ActionEvent;

聊天的技巧,瞬间就能和别人聊起来的11个话题

聊天的技巧,瞬间就能和别人聊起来的11个话题在社交活动的人际交往中,你是否发现聊天的时候,几乎没有什么可以交流的,不知道怎么跟别人聊,不知道聊什么话题好。那怎么跟别人聊天呢?分享瞬间就能和别人聊起来的11个话题 聊天的技巧,瞬间就能和别人聊起来的11个话题 在社交活动的人际交往中,你是否发现聊天的时候,几乎没有什么可以交流的,不知道怎么跟别人聊,不知道聊什么话题好。 在这种时候其实你缺乏的是如何选择交谈的话题的说话技巧。 以下将会向大家说明。可能大家在平日交谈时无意中都会谈到这些话题,我们将这些话题系统地归纳出来。 说白了,这类谈话的内容大多没有什么内涵,但谈多了也可以逐渐增进对对方的了解,进而使双方的关系变得更亲密。 重点:说白了,就是“衣食住行”! 分享11个瞬间就能和别人聊起来的话题

聊天的技巧,瞬间就能和别人聊起来的11个话题 第一气候 关于气候、四季的话题。 1 天气变热了/凉快了等等。随着对天气的谈论,逐渐引出一些更加自 然而无伤大雅的话题。这种方法十分简单方便。 第二爱好 关于兴趣、爱好的话题。 如果对方是男性,则可以谈论下专业棒球等体育运动,如果对方是女性,则可以谈论下美容或健康等的话题。但由于第一次见面时大多数人都还不了解彼此的兴趣爱好,因此这个话题在实际上比较难运用。第三新闻 关于新闻、时事的话题。 最好选择比较积极的话题,比如最近的英国威廉王子大婚的新闻等等。第四旅游 关于旅行的话题。

可以告诉对方自己最近游历某地的见闻,或询问对方是否去过某地。也可以向对方推荐某个地方,或者询问对方对某地的看法。 由此就可以引出对彼此家乡等等的谈论,使话题的涉及面更广。 第五天气 关于天气的话题。 下雨了,风很大,天气预报说……等等,是十分容易聊起来的话题。第六家人 关于自家的孩子、父母等的话题。 特别当对方年纪比较大的时候,如果向他询问有关孩子的问题,对方大多会欣然回答。当然,或许你并未结婚也没有孩子,这种时候就要看情况而定是否谈及这个话题了。 第七健康 可以跟对方谈谈自己的养生经,以及最近开始做的减肥运动等等,这可以引出对彼此日常生活的谈论,相对来说是个比较容易运用的话题。第八工作

基于JSP在线聊天系统说明书

在线聊天系统 系统说明书

目录 1 系统概述 (3) 1.1 系统说明 (3) 1.2 系统运行环境及其应用软件: (3) 2 系统功能设计 (3) 2.1 前台购物系统: (3) 2.2 后台管理系统: (4) 3 系统架构设计 (4) 4 数据库结构设计 (5) 4.1 在线购物系统E-R图 (5) 4.2 在线购物系统局部E-R图 (5) 4.3 数据表结构设计 (6) 5 系统运行界面..........................................................................错误!未定义书签。 5.1 主页界面 ...............................................................................错误!未定义书签。 5.2 注册功能 ...............................................................................错误!未定义书签。 5.3 个人资料管理........................................................................错误!未定义书签。 5.4 意见反馈 ...............................................................................错误!未定义书签。 5.5 登录功能 ...............................................................................错误!未定义书签。 5.6 我的购物车 ...........................................................................错误!未定义书签。 5.7 生成订单 ...............................................................................错误!未定义书签。 5.8 后台登录 ...............................................................................错误!未定义书签。 5.9 后台管理主界面 ............................................................错误!未定义书签。

计算机网络课设-基于TCP协议编程的网络聊天室

基于TCP协议编程的网络聊天室 设计内容:基于TCP协议编程的方式,编写程序模拟网络聊天室的运行过程。 设计要求: 1. 采用C/S模式,基于TCP协议编程的方式,使得各个用户通过服务器转发实现聊天的功能。 2. 分为两大模块:客户端模块和服务器端模块。 3. 客户端模块的主要功能: 1)登陆功能:用户可以注册,然后选择服务器登入聊天室。 2)显示用户:将在线用户显示在列表中。 3)接收信息:能接收其他用户发出的信息。 4)发送信息:能发出用户要发出的信息。 4.服务器端模块的主要功能: 1)检验登陆信息:检查登陆信息是否正确,并向客户端返回登陆信息,如 信息正确。就允许用户登陆。 2)显示在线状态:将该用户的状态发给各在线用户。 3)转发聊天信息:将消息转发给所有在线的用户。 5. 编程语言不限。 一、需求分析 此程序主要分为两部分:服务器端和客户端。 服务器端用于提供一个网络端口,等待客户端发出请求,登录到此服务端,然后进行网络通讯和消息的转发;客户端可通过服务器端的IP地址发送连接请求,然后登陆聊天室。在服务器端的成员列表栏中会显示在线的所有人名单,有人退出聊天室,成员列表会自动除名。整个程序的主体使用了CSocket类的方法,实现了网络通讯聊天。整个程序设计为两个部分:服务器(SpeakerServer)和客户端 (SpeakerClient) 。 多人聊天的关键在于要将每个客户端发送过来的消息分发给所有其他客户端,为了解决这个问题,在服务器程序中建立一个套接口链表,用来保存所有与客户端建立了连接的服务端口。 设计原理:服务器通过socket()系统调用创建一个Socket数组后(设定了接受连接客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进

Java Socket网络编程--聊天室的实现(多线程实现无需等待对方响应版本)

一,服务端: package com.samael.socket; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import https://www.wendangku.net/doc/8a8501844.html,.ServerSocket; import https://www.wendangku.net/doc/8a8501844.html,.Socket; public class MyServer { class ThGetMsg extends Thread{ @Override public void run() { if(fromClient==null) return; while(true){ try { System.out.println("Message From Client:["+fromClient.readLine()+"]"); this.sleep(50); } catch (IOException e) { break; } catch (InterruptedException e) { e.printStackTrace(); } } } } public static BufferedReader fromClient=null; public static void main(String[] args) { try { //get server socket ServerSocket server=new ServerSocket(3166); //get socket from client Socket socket=server.accept(); System.out.println("The IP["+socket.getInetAddress()+"] is connected!");

如何与客户找聊天话题

市场业务人员如何与客户找聊天话题 聊天要有目的,拉近感情的距离 聊天大都是情感交流,或者是内心的宣泄。但聊天也有水平高低。水平低的人聊天,满口的牢骚事,满腹的怨声载道,与这种人聊天,只会让听者难过,讲者也达不到情感交流的目的。水平高的人,既能拉近彼此的距离,还能让情感在聊天的过程中更加加深。 一、聊天要有目的。带有一定的目的,你就能及时而恰到好处地发问,随时调整聊天的内容。 二、要注意选择合适的聊友 三、选择合适的聊天话题。 1、有些人对聊天题材存在误解,以为只有那些不平凡的事件才值得谈。其实,人们除了爱听一些奇闻轶事外,更大量的是爱听与日常生活有关的普通话题。对话题的另外一个误解是,以为必须谈那些深奥的,显示学问的题材,才能获得别人的尊重,但这类问题,一般聊天时难以找到知己。 2、准则:若想与顾客交易,先要具有面对任何人都能开口说话的胆量和本事,正如一位学者所说“如果你能和任何人连续谈上10分钟而又能使对方发生兴趣,你便是最优秀的交际人物。” 3、只要有心与别人接触,话题实在很多。一个人所看到、听到、感受到的事物都是很好的话题。 4、可以谈理想,谈社会责任感,谈生活哲理;可以谈工作体会、谈同事关系,谈友谊,谈爱情;可以谈书籍、电影、电视、戏剧,把你的欣赏感受发挥一番;可以谈天气,谈游乐,谈衣食住行。 5、但是,有些话是要小心避开的: 对于你不知道的事情,不要冒充内行。 不要向陌生人夸耀你的成绩,如个人成就,你的富有,你儿子特别聪明等。 不要再公共场合去议论朋友的失败、缺陷和隐私。 不要谈容易引起争执的话题。 不要到处诉苦和发牢骚,这不是争取同情的正确方法。 6、话题的选择最好是就地取材,即按照当时所处的环境觅取话题。 7、也可以向对方了解一些他熟悉的、有兴趣的问题。 8、接近别人并与人友好相处,有三个步骤: 找出别人感到特殊兴趣的食物 对于那些对方感兴趣的东西积攒若干知识。 对他表示出你对那件事物真的感兴趣。 9、没机会聊天,也要保持联系 10、要使聊天卓有成效,必须把握以下因素: 理解和共鸣,首要的因素是你是否能确立一个共同语言,能否得到对方的理解,能否产生共鸣。 建立共同点,在交流顺利时,还需要进行合作,寻找共同点,而不是强调思想的分歧。 11、让聊天为正式交谈热身 当交谈开始时,我们不妨谈谈天气 平时除了你所最关心的、最感兴趣的问题之外,你要多储备一些和别人“闲谈”的资料 自己闹过的有些无伤大雅的笑话 惊险故事

基于socket简易聊天程序

简单的socket程序 2010-01-13 22:18 虽然很简单,但还是调试了很长时间。本科时候接触过socket——那个帅帅的刘 老师的课,现在重新再捡起来。 程序中专门建立一个FunThread线程用来接收数据,实现双向通信,也可以连续发送、连续接收。代码贴上来,如果还能保留VA View那样的颜色区别就好看 了,但是试了好几遍都不行 server: #include #include #define PORT 6000 //服务器端口 #define MSGSIZE 1024 //收发缓冲区的大小 #pragma comment(lib, "ws2_32.lib") //链接静态库 DWORD WINAPI FunThread(LPVOID); //创建一个线程,专门用来接收数据 SOCKET sClient; //连接所用套节字 SOCKET sListen; //监听套接字 SOCKADDR_IN client; //保存客户的地址信息 int iaddrSize = sizeof(SOCKADDR_IN); int main() { WSADATA wsaData; SOCKADDR_IN local; char s_Message[MSGSIZE]; //收发缓冲区 WSAStartup(0x0202, &wsaData); //Initialize Windows socket library sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//创建服务器监听套节字。TCP协议 local.sin_family = AF_INET; //AF_INET指明使用TCP/IP协议族 local.sin_port = htons(PORT);//指明连接服务器的端口号 local.sin_addr.s_addr = htonl(INADDR_ANY);//自动获取本机地址 bind(sListen, (struct sockaddr *)&local, sizeof(SOCKADDR_IN));//地址绑定到套接字

Linux下的Socket网络编程:一个简易聊天室的实现-徐慧军

Linux下的Socket网络编程:一个简易聊天室的实现-徐慧军

高级程序设计与应用实践 报告 一个简易聊天室的实现 姓名:徐慧军 学号:2121134 专业:电子与通信工程 学院:信息科学与技术学院 任课教师:廖晓飞 2013年05月02日

Linux下的Socket网络编程: ——一个简易聊天室的实现一、socket介绍 socket接口是TCP/IP网络的API,socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP 网络编程,必须理解socket接口。 socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix 系统的输入和输出的话,就很容易了解socket了。网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符。socket也具有一个类似于打开文件的函数调用socket(),该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过该socket实现的。常用的socket类型有两种:流式socket (SOCK_STREAM)和数据报式socket(SOCK_DGRAM)。流式是一种面向连接的socket,针对于面向连接的TCP服务应用;数据报式socket是一种无连接的socket,对应于无连接的UDP服务应用。 二、Socket创建 socket函数原型为: #include #include int socket(int domain, int type, int protocol); 功能:调用成功,返回socket文件描述符;失败,返回-1,并设置errno 参数说明: domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP 协议族; type参数指定socket的类型: SOCK_STREAM 提供有序、可靠、双向及基于连接的字节流

与MM聊天的128个步步深入话题(精)

..::◇★☆★〒泡学网〒官方论坛〒☆★★◇::.. 【欢迎您的光临】 聊着聊着就找不着话题了?经常抱怨对方不懂自己的感受?……没关系。我们为您罗列了128个绝佳的问题,每个都是一个好话题,亦是一次重新认识对方的机会。 一、懂你懂我 1.我哪一点最吸引你? 7.描述一下我的味道。 8.私下你是如何向别人描述我的? 15.你第一次吻我之前在想些什么? 16.我第一次把你约出来的时候你考虑过拒绝我吗? 17.我们第一次面对对方裸体的时候,你有担心过什么吗? 18.初吻时是几岁? 19.初夜是何时? 20.初恋时你多大? 47.我做过的哪件事很让你生气? 52.告诉我,你是何时发觉爱上我的? 87.我使你难堪过吗? 88.如果你能够改变我的一个方面,那会是什么呢? 98.如果你打算问我一个问题,你会问什么? 99.你是如何察觉我在生气的? 100.你觉得我能够伤害你最深的一件事会是什么? 101.我做的哪道菜你已经吃厌了? 102.如果我想在餐桌上给你一个惊喜,你希望是哪道菜呢? 二、耳鬓厮磨 2.你认为是性还是感情维持着一段完美的恋情? 13.如果你的朋友偷腥,你觉得你应该告诉他的伴侣吗? 14.如果你的朋友偷腥,你会让他的伴侣知道吗? 21.你的第一次约会是在哪位“老师”的指导下完成的? 26.描述一下你心中完美的约会。

42.什么会让你慧剑斩情丝? 44.你认为在恋爱中谁会占主导地位,为什么? 75.一个人去度假,另一个人独自在家,你会怎么想? 107.你认为男人的爱与女人的爱是不同的吗? 108.作为男性(女性),你认为女性(男性)最有必要知道的是什么?110.给爱情下个定义。 114.网恋算是真正的恋爱吗? 115.你约过有夫之妇(有妇之夫)吗? 129.浪漫的度假作为你生活方式的一部分,你有何感受? 三、两性话题 3.当你看到一个女性,你最先注意的是她的哪一部位? 4.你觉得热恋中还继续关注其他女人是否不妥?婚后会有所改变吗? 5.当你看到一个男性,你最先注意的是他的哪一部位? 6.我不说,你又是如何知道我想亲热呢? 9.你认为多长时间亲热一回算是不频繁啊? 10.你自慰吗? 11.你用洗手间的时候我的进入会让你作何感想? 12.我们最近洗一次鸳鸯浴是什么时候? 28.做过春梦吧?说说看。 38.当你还小屁孩的时候,与异性小朋友有过重口味接触吗? 80.你还有什么尚未实现的性幻想吗? 81.尝试过与同性亲热吗?谈谈你对同性恋的看法。 94.ZA时你最想要我的哪一招? 四、谈婚论嫁 27.你心中完美的婚礼是什么样子的? 43.你认为一夫一妻制很重要吗? 45.婚后会要孩子吗? 50.你对堕胎的看法是? 51.宗教信仰对婚姻影响很大吗? 54.离婚对于夫妇双方有何影响?

聊天系统 (1)

高科学院 《计算机网络》 资料标签 2013 ---2014年第2 学期 题目:基于TCP的聊天软件设计及实现 姓名:赵东东2012050139,马超2012050140 罗媛2012050138,王俊豪2012050137 康佳威2012050141,黄宁2012050142 专业:计算机科学与技术 班级:12级一班 指导教师:吕林涛职称:教授设计时间:2014. 6. 3 至2014. 6. 9 资料清单:

《计算机网络》课程设计 基于TCP的聊天软件设计及实现 专业计算机科学与技术 班级一班 指导老师吕林涛 组长赵东东 小组成员赵东东2012050139、马超2012050140 罗媛2012050138、王俊豪2012050137 康佳威2012050141、黄宁2012050142 西安理工大学高科学院

2014年第 2 学期 目录 第1章概述 1.1需求分析和开发背景-----------------------------------------1 1.2课设分工---------------------------------------------------1 1.3聊天室的设计目标-------------------------------------------2 第2章相关知识 2.1 WINSOCK介绍-----------------------------------------------3 2.2 MFC类CASYNCSOCKET和CSOCKET-------------------------------4 2.3 利用CSOCKET进行有连接的通信------------------------------6 第3章软件设计 3.1客户端的实现--------------------------------------------7 3.2服务端的实现----------------------------------------------15 第4章软件测试 4.1 服务器端-------------------------------------------------23 4.2 客户端--------------------------------------------------24 第5章课设总结 5.1 小组成员总结---------------------------------------------25 5.2 组长课设总结---------------------------------------------26 参考文献-----------------------------------------------------27

基于socket简易聊天程序毕业设计(论文)

简单的socket程序 虽然很简单,但还是调试了很长时间。本科时候接触过socket——那个帅帅的刘 老师的课,现在重新再捡起来。 程序中专门建立一个FunThread线程用来接收数据,实现双向通信,也可以连续发送、连续接收。代码贴上来,如果还能保留VA View那样的颜色区别就好看 了,但是试了好几遍都不行 server: #include #include #define PORT 6000 //服务器端口 #define MSGSIZE 1024 //收发缓冲区的大小 #pragma comment(lib, "ws2_32.lib") //链接静态库 DWORD WINAPI FunThread(LPVOID); //创建一个线程,专门用来接收数据 SOCKET sClient; //连接所用套节字 SOCKET sListen; //监听套接字 SOCKADDR_IN client; //保存客户的地址信息 int iaddrSize = sizeof(SOCKADDR_IN); int main() { WSADATA wsaData; SOCKADDR_IN local; char s_Message[MSGSIZE]; //收发缓冲区 WSAStartup(0x0202, &wsaData); //Initialize Windows socket library sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);//创建服务器监听套节字。TCP协议 local.sin_family = AF_INET; //AF_INET指明使用TCP/IP协议族 local.sin_port = htons(PORT);//指明连接服务器的端口号 local.sin_addr.s_addr = htonl(INADDR_ANY);//自动获取本机地址 bind(sListen, (struct sockaddr *)&local, sizeof(SOCKADDR_IN));//地址绑定到套接字

Linux C语言 socket编程 聊天室 可移植到arm开发板

sockets聊天室 1.1介绍 包括一个客户端和一个服务器。可实现多人聊天和两人一对一单独聊天。 1.2开发环境和工具 Linux gcc 1.3程序设计 服务器: 1. 声明一个client结构体,包含用户自己的socket描述符mid,自己的用户名name以及 与自己聊天对象的Socket描述符fid(默认是-1,即公共聊天室)。并定义一个结构体数组。 2. 服务器新建一个socket设置默认的ip为自动获取,调用bind()函数绑定服务器socket 与ip。 3. 开启listen()监听客户端的连接请求。 4. 在while循环里,用accept()等待连接,连接成功后,把accept()返回的socket描述 符存入client结构体数组中。 5. 每成功新建一个连接,就创建一个对应的子线程,接收并转发消息。 6. 定义void rec_snd(int n)这个函数,用于接收和转发消息。可选择公共聊天室和私聊, 私聊需要正确输入对方的名字。连接建立以后就可以发送消息。当接收的消息为bye 时,断开当前连接,如果是一对一私聊,一方断开另一方自动转入公共聊天室。 客户端: 1.新建一个socket,并与ip,端口进行绑定。 2.调用connect连接服务器。连接成功后新建一个线程用于发送消息, 主线程在while中调用read()接收服务器消息。 3.Snd()函数用于向服务器发送消息。 4._select()函数用于选择功能。 1.4应用演示 服务器端成功开启等待连接:

当有客户端连接时,会显示ip端口,socket标识符信息。客户端成功连接上服务器时会收到提示输入用户名: 输入姓名后会提示选择功能:

基于Socket的聊天室(C#版)

一、服务器/客户端聊天室模型 聊天室客户端(商用PC) 服务器 聊天室客户端 (其他) 聊天室客户端(笔记 本) 其他服务器 1.首先启动聊天室服务器,使得TcpListener开始监听端口,此时TcpListener 会进入Pending状态,等待客户端连接; 2.其次,当有客户端连接后,通过AccepSocket返回与客户端连接的Socket对象,然后通过读写Socket对象完成与聊天室客户端的数据传输。聊天室客户端成功启动后,首先创建一个Socket对象,然后通过这个Socket对象连接聊天室服务器,连接成功后开通Socket完成数据的接收和发送处理。 二、系统功能设计 本设计为一个简单的聊天室工具,设计基本的聊天功能,如聊天、列表维护等。系统主要为两大块:聊天室服务器及聊天室客户端。 服务器界面设计如下:

客户端界面设计如下:

三、聊天协议的应答 A—网络—B 主机与主机通信主要识别身份(标识设备用IP)及通信协议 网络应用程序——端口号——接收数据 注:1.IP地址是总机,端口号是分机(传输层) 2.端口号为16位二进制数,范围0到65535,但实际编程只能用1024以上 端口号 Socket编程 首先,我们了解常用网络编程协议。我们用得最多的协议是UDP和TCP,UDP是 不可靠传输服务,TCP是可靠传输服务。UDP就像点对点的数据传输一样,发送 者把数据打包,包上有收信者的地址和其他必要信息,至于收信者能不能收到,UDP协议并不保证。而TCP协议就像(实际他们是一个层次的网络协议)是建立在 UDP的基础上,加入了校验和重传等复杂的机制来保证数据可靠的传达到收信 者。一个是面向连接一个无连接,各有用处,在一些数据传输率高的场合如视频 会议倾向于UDP,而对一些数据安全要求高的地方如下载文件就倾向于TCP。 Socket————网络应用程序 电话机————访问通信协议 聊天协议的应答: 聊天状态:CLOSED和CONNECTED状态 执行CONN命令后进入CONNECTED状态,执行下列命令: CONN:连接聊天室服务器

和女孩子聊天话题

和女孩子聊天话题 我们聊天的时候总是想要围绕着我们事先想的话题展开,而并没有关注聊天本 身:于是我们经常会出现以下情况:举例:我:你吃饭了吗?(提出一个话题)MM:吃了我:你在干什么呢?(又提出一个话题)MM:上网我:你那天气 好吗?(又提出一个话题)MM:还可以我:你最近忙吗?(又提出一个话题)MM:不忙我:。。。。(没话题可讲了,因为话题总有讲完的时候)我:哦,这样啊,我就想打电话问问你在干什么,那你继续忙吧,拜拜MM:拜拜因为此时你脑子里面想的总是怎样和女孩聊天,我该说些什么呢?和MM聊些什么话题呢?这样往往就进入了死胡同,当你事先准备的话题说完后,你就发现,你哑巴了!而正确的聊天思想是:去关注聊天的本身,而不是聊天的话题,不是 聊什么的问题,而是怎么去聊的问题关键词法聊天:举例我:你吃饭了吗?(提 出一个话题)(关键词:吃饭饭)MM:吃了啊我:吃的什么啊?(由关键 词吃饭引发)MM:牛肉面啊我:你自己做的吗?(由关键词饭引发)MM:牛肉面啊我:你自己做的吗?(由关键词饭引发)MM:我不会做饭也,买的啊(关键词:不会做饭买)和女孩子聊天话题我:你都不会做饭嘛, 一个女孩子家家,连饭都不会做,看你怎么嫁的出去(由关键词不会做饭引发出现新的关键词嫁)MM:不想做,以前都是妈妈做的(关键词:以前妈妈)我:以前是以前嘛现在是现在你已经长大了啊女孩子要学会做饭的你当人家老婆不做饭的吗?(由关键词以前引发出现新的关键词长大老婆)MM:我还没想好嫁人呢。。。(关键词嫁人)我:你妈妈很疼你吧(由关键词妈妈引发出现新的关键词疼)MM:我妈妈很疼我的啊。我是最小的嘛 当然疼我了(关键词:最小)我:你是最小的?你还有兄弟姐妹?(由关键词最小引发出现新的关键词兄弟姐妹)MM:我姐姐啊BLABLABLAL。。。。(一大堆)走到这里发现这里的关键词用的差不多了马上返回到更早谈话时的 关键词嫁可以用上层上上层的谈话时出现的关键词展开聊天!我:你现在还没想过要嫁给什么样的人吗?(由关键词嫁引发)MM:还没想好呢BLABLABLAL。。。。(一大堆)(关键词:没想好)我:那你的标准是什么呢?(由关键词没想好引发)MM:我的标准嘛是。。BLABLABLAL。。。。(一大堆)这个时候发现她讲的话里面没有关键词了或者说这里的关键词不 利于你展开话题马上返回到更早谈话时的关键词展开聊天!例如第6行的关键词买我:你喜欢买东西,喜欢去购物吗?(由更早的关键词买引发出现新的关键词购物)MM:喜欢啊超级喜欢的(关键词:喜欢)我:那你还 喜欢干什么?(由关键词喜欢引发)MM:喜欢唱歌,游泳,旅游啊(出现新的关键词:唱歌,游泳,旅游)我:哦你喜欢唱歌你喜欢唱谁的歌呢?MM:。。。。。我:哦你喜欢游泳你会游泳?你游泳技术怎么样?你一般 在那游?MM:。。。。。我:哦你喜欢旅游你都旅游过那些地方?感觉怎么样?MM:。。。。。不要一直在一个关键词上纠缠下去抓住一个关键词开聊聊到一定程度停!返回上一个关键词开聊聊到一定程度停!返回上一个聊到一半的关键词继续聊完停!返回至上上一个关键词开聊聊到一定程度停!返回至上上上一个关键词聊。。。。。。你会发现在整个聊天过程中你没有去准备什么话题而聊天本身就会给你带来无数的话题!你不需要准备随时随地

相关文档
相关文档 最新文档