老师留了一个作业:Java实现多线程通讯。客户端、服务端两个程序课实现自由对话,类似聊天功能,一个服务器课对多个客户端。
要求每天记录研发日志。我的疑问:
聊天功能不都是客户端对客户端吗?怎么会有服务端?
涉及到服务端是不是要用socket?如果不是用什么呢?
怎么实现多线程呢?在线程方法里面写读取信息吗?
以及,这个作业的目的是要掌握线程呢?还是通讯技术呢?
哎,哪儿哪儿都晕。。非常急,郁闷了一下午也没有头绪,希望大家帮我一下~~~
说的尽可能详细些好吧。
小女不胜感激~~~~我分不多了,大家将就一下吧。不好意思了
要求每天记录研发日志。我的疑问:
聊天功能不都是客户端对客户端吗?怎么会有服务端?
涉及到服务端是不是要用socket?如果不是用什么呢?
怎么实现多线程呢?在线程方法里面写读取信息吗?
以及,这个作业的目的是要掌握线程呢?还是通讯技术呢?
哎,哪儿哪儿都晕。。非常急,郁闷了一下午也没有头绪,希望大家帮我一下~~~
说的尽可能详细些好吧。
小女不胜感激~~~~我分不多了,大家将就一下吧。不好意思了
解决方案 »
- 求完整版的java权限管理系统
- swt设选项卡间隔问题
- 用java编写考试系统的查询共能代码?急急
- js问题,请个马人解决一下!
- runescape gold,items,money,accounts,powerleveling,questqoint,rs gold,items,money,accounts,powerleveling,questqoint at ogogame
- 如何在Hibernate中查询出表中最后一条数据
- 怎么把一个页面上得LIst对象传到我得Action中?(Struts框架)
- 第一次试验hibernate的one-to-many,不成功
- tomcat4.1.18是否支持ejb
- 大家推荐一些关于调试JSP程序的比较好的方法吧?怎么样
- 请问我学习struts1.0不久,才发现2.0,而且框架不一样,我想问我现在该怎么办,是继续掌握好1.0,还是改学2.0
- 用Hibernate生成类的相关问题
怎么会没有服务器呢,晕。所以的消息都是先到服务器再到客户端的
package com.thread.www;public class FirstThread
{
public static void main(String[] args)
{
First f = new First();
f.start();
//Thread t = new Thread(f);
//t.start();
for(int i=0; i<1000; i++)
{
System.out.println("main thread way=============="+i);
}
}
}
/*
* 写一个线程类的时候最好是实现Runnable接口
* 这样的话这个类还可以继承其他的类,实现其他的接口
*/
//class First implements Runnable
class First extends Thread
{
public void run()
{
for(int i=0; i<1000; i++)
{
System.out.println("other thread way "+i);
}
}
}
这简单的多线程 至于服务器是用什么协议 是tcp/ip还是icp/ip呢 这个你可以问下腾讯
因为聊天的协议一般都是用icp/ip协议,但qq有时候有这样的情况,昨天登录QQ没有消息,但今天你登录QQ有可能时间在昨天登录前的信息,这有点想不通
个人理解是这样的:
聊天功能虽然是客户端对客户端,但这两者直接进行通讯需要借助服务端,就是说先起一个服务端,然后可以开多个客户端,各个客户端之间就可以借助服务端通讯了。
需要涉及socket。
以多线程为主。提供个思路:
1.首先,实现最简单的单个客户端链接服务端。
2.从单个客户端可以发送消息到服务端,并且在服务端可以看到。
3.从服务端可以发送消息到客户端。
4.可以连多个客户端到服务端,并且服务端都可以看到客户端所发信息。
5.各个客户端可以看到其他客户端发送的信息。
6.修复一些Bug,个人理解基本上就是这样,本人也好久不玩多线程以及Socket了。
加入多线程的部分,可以在服务器端用一个List把多个ServerSocket对象装起来,客户端没什么变化。
详细可以看看java说明文档的java.net包里的ServerSocket类和Socket类的用法。再复杂一些的可以加入用户信息的记录啊,私聊的功能啊,增加容错性啊,广播的功能啊(当然,这个功能还有更“专业”的类来实现),等等。