1. java中的socket是什么意思

socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
-----J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

给你一个例子:

服务端例子:

importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.IOException;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclassServerDemo{
/**
*注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,
*而后才可以向客户端发送信息,否则将会有运行时出错。
*@paramargs
*/
publicstaticvoidmain(String[]args){
ServerSocketss=null;
try{
ss=newServerSocket(8888);
//服务器接收到客户端的数据后,创建与此客户端对话的Socket
Socketsocket=ss.accept();
//用于向客户端发送数据的输出流
DataOutputStreamdos=newDataOutputStream(socket.getOutputStream());
//用于接收客户端发来的数据的输入流
DataInputStreamdis=newDataInputStream(socket.getInputStream());
System.out.println("服务器接收到客户端的连接请求:"+dis.readUTF());
//服务器向客户端发送连接成功确认信息
dos.writeUTF("接受连接请求,连接成功!");
//不需要继续使用此连接时,关闭连接
socket.close();
ss.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}

客户端例子:

importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.IOException;
importjava.io.OutputStream;
importjava.net.Socket;
importjava.net.UnknownHostException;
publicclassClientDemo{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
Socketsocket=null;
try{
socket=newSocket("localhost",8888);
//获取输出流,用于客户端向服务器端发送数据
DataOutputStreamdos=newDataOutputStream(socket.getOutputStream());
//获取输入流,用于接收服务器端发送来的数据
DataInputStreamdis=newDataInputStream(socket.getInputStream());
//客户端向服务器端发送数据
dos.writeUTF("我是客户端,请求连接!");
//打印出从服务器端接收到的数据
System.out.println(dis.readUTF());
//不需要继续使用此连接时,记得关闭哦
socket.close();
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
}

2. 有没有谁做过java方面对socket包协议解析的功能、比如它的头部、body等等、是怎么发送和接收处理的

默认的情况是和HTML的一样的。 不过你可以通过设置response.setHeader啥的。

3. 如何使用java socket来传输自定义的数据包

自定义是什么意思?是指定义数据包的大小,还是数据包中内容的格式

4. java怎么处理socket服务端粘包

socket粘包是避免不了的,主要在于接收方如何解包和控制。处理方法:

定制socket传输协议。增加包头、命令、数据长度、数据体、结束位。比如发送消息:,

String msg = "你好";
byte[] byBuffer = msg.getBytes();
//加入定制的协议该条数据位:
byte[] b = new byte[4+byBuffer.length];
b[0] = 0xFFFFF; //随便定义,包头
b[1] = 0x01; //命令
b[2] = byBuffer.length; //数据长度
b[3 - n] = byBuffer; //数据
b[b.length -1] = 0x0d; //结束
接收方接收到该数据后判断包头是否一致,不一致则不要,根据b[2]数据长度来去数据,第一次未接收完继续接收第二次,直到接收数据长度==b[2]为止。一条完整的数据就出来了。
写得很随意,理解理解~

5. java中Socket的心跳包设置问题

使用一个线程进行监控,如果空闲一定时间就发送一个心跳包。对于异步Socket可以一个线程监控多个连接。

6. java socket 如何发送指定协议的数据包

通信协议是自己定义的数据格式
然后通过大概以下方法调用

{
String host;
int port;
byte[] data;
Socket s=new Socket(host,port);
OutputStream out = s.getOutputStream();
out.write(data);
out.close();
s.close();
}

7. java DatagramSocket receive 方法 接收 多个包

多线程,用一个线程监听,如果接到包,创建一个线程处理,继续监听。保证一直有一个线程在监听就可以了。

8. JAVA Socket

呵呵,我学Java也遇到了很多问题,有时候都不知道怎么办才好。学习一门语言不是件容易的事情,要坚持下去!我能说的也就只有这些了,怎么做还要看你自己!
加油吧!

9. java中Socket如何实现数据包传输的打包和解包

socket一般调用accept方法等待连接:
public class ServerThread extends Thread{

ServicePanel servicePanel = null;
ServerSocket serverSocket = null;
Socket socket = null;

public ServerThread(ServicePanel servicePanel,ServerSocket serverSocket) {

this.servicePanel = servicePanel;
this.serverSocket = serverSocket;
}

public void run(){

while (true) {
try {
socket = serverSocket.accept();//等待连接
new ReciveFromClient(servicePanel,socket).start();
} catch (IOException e) {
// e.printStackTrace();
break;
}
}
}

}
至于收包,发包是以流的形式传送的:
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
一般包里面的内容也就是被我们封装在某个类中,这个类要实现序列化,即实现Serializable接口;
发送方法那些就要自己写了~