Java学习笔记——实时通信Socket实例
最近新学习Java,尝试一下Java的Socket编程,发现确实比C++要简便。
Java的Socket编程相比于C++在封装方面更加完善,所以对于Socket连接前的准备工作要比C++少去很多步骤。对比C++的Socket编程就知道Java代码可精简太多。
首先是Sever端中,省去了初始化ws2_32.dll动态库和选择dll版本的过程(即调用WSASTARTUP的过程)。其次是不需要手动设置sockaddr的网络地址等信息,也不需要bind地址信息的流程,在Java中服务端只需要设定监听的端口号(port)就可以打开Sever端,十分方便。接下来与Client端对接时也只需要一个accept函数来阻塞等待客户端的连接请求,相当于C++中的listen和accept的作用。
而在Client端中,网络地址信息这部分也只需要手动填入要通信的主机端的ip地址和端口号即可,在客户端中都不需要像C++那样调用connect函数,Java的Client端调用new Socket()函数创建套接字时就会自动发起连接请求,等于是创建Socket和连接Sever请求发送被封装在了同一个Socket()函数中。
(Java的Socket编程真的比C++能少写好多行)
Java Socket即时通讯实例:
Sever端:
import java.io.*;
import java.net.*;//导入socket所需的库
public class ServerSock {
public static void main(String args[]) {
try{
ServerSocket server=null;
try{
//创建一个ServerSocket在端口4844监听客户请求
server=new ServerSocket(4844);
}catch(Exception e){
e.printStackTrace();//出错,打印出错信息
}
Socket socket=null;
try{
//使用accept()阻塞等待客户请求,有客户请求到来则产生一个Socket对象,并继续执行
socket=server.accept();
}catch(Exception e)