Java Socket 长连接通信
最近项目中有个需求,要用Socket实现长连接,并且在通信过程中要互为server和client,即在一个连接中,既能够发送消息,(此时作为客户端),又要能够接收消息(此时作为server端),研究了下,实现方式如下:
一、发送消息时建立连接,构建通道。
Socket socket = new Socket();
SocketAddress endpoint = new InetSocketAddress("IP", port);
try {
socket.connect(endpoint, 10000);
} catch (Exception e) {
e.printStackTrace();
}
二、同时启动另一个线程,该线程用来接收消息
该线程里传入步骤一已经创建好的socket连接
public class Parse extends Thread
{
public Parse(Socket client) {
this.client = client;
}
public void run() {
in = client.getInputStream();
out = client.getOutputStream();
//读取数据
}
}
三、如此,只要程序启动,两边都不断开连接,此连接即为长连接,同时,在步骤二读取数据的过程中,加入异常的处理,如果中途socket断开,则重新连接。
相关文档:
Java学习从入门到精通
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......
一个java的class文件是一个二进制文件,其中前四个字节是magic位,第五到第六个字节对应于minor和major,下面是这个类文件版本与JDK的对应关系。class文件的minor和major可以通过ultraedit来查看,或自己编程等。
major minor Java platform version
45 3 1.0
45 3 1.1
46 0 ......
最近学了servlet和oracle,也就把他们结合下,做个分页的页面出来。算是一种复习吧。
1.首先是oracle的分页显示SQL语句:
select * from(select a.*, rownum rn from (select * from Person) a where rownum <= MaxN ......
import java.util.Properties;
import javax.mail.FetchProfile;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddress;
public class ReceiveMail
{
public ReceiveMai ......
到这里我们做一个完整的例子来说明线程产生的方式不同而生成的线程的区别:
package debug;
import java.io.*;
import java.lang.Thread;
class MyThread extends Thread{
public int x = 0;
public void run(){
System.out.println(++x);
}
}
class R implements Runnable{
private int x = ......