java中怎么用tcpip将服务器的消息发送给多个用户
你服务器accept方法后是不是会得到一个Socket
为这个Socket(是通过这个Socket和客户端的Socket进行沟通)分配一个服务
我是这么用的ServerThread tt=new ServerThread(socket);
class ServerThread{
private Socket so;
public ServerThread(Socket s)
{
thisso=s;
}
public void send()
{
}
public void receive()
{
Thread re=new Thread()
{
public void run()
{
}
}
}
}
相当于你用手机拨打人工服务,会给你分配一个客服
为这个Socket分配后,写一个发送方法,和一个接收方法(线程)
然后把ServerThread tt=new ServerThread(socket);中的tt保存到集合中去,要单独给某个发送
就从集合中取出来send();这个方法应该带个参数,把消息对象传过去就是
我只知道j2me的网络连接看起来即时的东西都是作假的,因为在j2me里服务器端要主动找寻客户端的话难度太大,至少在没有客户端的IP或者任何能标识客户端的东西都没有。
说到这里你也应该明白了吧~ 并不只是单靠API就可以完成一个商业软件的,就像你这个问题,完全可以在客户端做一个循环,刷服务器端,每1秒发送给服务器端本机在线确认信息,或者每几秒发送一次,然后在服务器端也做一个等待验证,如果3分钟或者1分钟或者更短的时间内接收不到该用户所登录的客户端发送过来的在线确认信息,而且也没有收到正常退出信息,那就一定是非正常退出咯~ 总结就是客户端刷服务器端~
或者你厉害的话,就再做一个进程,当你这个程序启动时调用另一个监听该程序的进程,但要用JAVA做到这一步就很麻烦了。
类似聊天室的即时通讯,用JAVA做肯定是需要一个服务器端超时机制的,这个机制也肯定需要客户端定时发送在线确认的,就这么简单。
首先必须明确:TCP/IP模型中有四层结构:
应用层(Application Layer)、传输层(Transport Layer)、网络层(Internet Layer )、链路层(LinkLayer)
其中Ip协议(Internet Protocol)是位于网络层的,TCP协议时位于传输层的。通过Ip协议可以使可以使两台计算机使用同一种语言,从而允许Internet上连接不同类型的计算机和不同操作系统的网络。Ip协议只保证计算机能够接收和发送分组数据。 当计算机要和远程的计算机建立连接时,TCP协议会让他们建立连接:用于发送和接收数据的虚拟电路。
在JAVA中,我们用 ServerSocket、Socket类创建一个套接字连接,从套接字得到的结果是一个InputStream以及OutputStream对象,以便将连接作为一个IO流对象对待。通过IO流可以从流中读取数据或者写数据到流中,读写IO流会有异常IOException产生。
套接字或插座(socket)是一种软件形 式的抽象,用于表达两台机器间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。JAVA 有两个基于数据流的套接字类:ServerSocket,服务器用它“侦听”进入的连接;Socket,客户端用它初始一次连接。侦听套接字只能接收新的 连接请求,不能接收实际的数据包,即ServerSocket不能接收实际的数据包。
套接字是基于TCP/IP实现的,它是用来提供一个访问TCP的服务接口,或者说套接字socket是TCP的应用编程接口API,通过它应用层就可以访问TCP提供的服务。
在JAVA中,我们用 ServerSocket、Socket类创建一个套接字连接,从套接字得到的结果是一个InputStream以及OutputStream对象,以便 将连接作为一个IO流对象对待。通过IO流可以从流中读取数据或者写数据到流中,读写IO流会有异常IOException产生。
以下是一个展示java使用tcp通讯的简单例子,包括服务器和客户端代码:
/
TCPServer
/
import javaio;
import javanet;
class TCPServer{
public static void main(String[] args)throws IOException{
ServerSocket listen = new ServerSocket(5050);
Socket server = listenaccept();
InputStream in = servergetInputStream();
OutputStream out = servergetOutputStream();
char c = (char)inread();
Systemoutprintln("收到:" + c);
outwrite('s');
outclose();
inclose();
serverclose();
listenclose();
}
}
/
TCPClient
/
import javaio;
import javanet;
class TCPClient{
public static void main(String[] args)throws IOException{
Socket client = new Socket("127001" , 5050);
InputStream in = clientgetInputStream();
OutputStream out = clientgetOutputStream();
outwrite('c');
char c = (char)inread();
Systemoutprintln("收到:" + c);
outclose();
inclose();
clientclose();
}
}
TCP是传输层协议,定义数据传输和连接方式的规范。握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。
HTTP 超文本传送协议(Hypertext Transfer Protocol )是应用层协议,定义的是传输数据的内容的规范。
HTTP协议中的数据是利用TCP协议传输的,特点是客户端发送的每次请求都需要服务器回送响应,它是TCP协议族中的一种,默认使用 TCP 80端口。
好比网络是路,TCP是跑在路上的车,HTTP是车上的人。每个网站内容不一样,就像车上的每个人有不同的故事一样。
0条评论