# 基于JAVA的SIP协议实现[part1]
最近用JAVA的SIP协议写了一个GB28181平台的对接,并成功完成了海康、大华、中威等设备,更重要的是海康平台、公安一所平台的对接。因为行业内很少有JAVA方面的设备接入实现,希望本篇能够让JAVA在安防接入生态中发挥越来越大的作用。
# 一、组件
```
<!-- SPI协议相关的包 -->
<dependency>
<groupId>javax.sip</groupId>
<artifactId>jain-sip-api</artifactId>
<version>1.2.1.4</version>
</dependency>
<dependency>
<groupId>javax.sip</groupId>
<artifactId>jain-sip-ri</artifactId>
<version>1.2.1.4</version>
</dependency>
```
# 二、SIP监听类接口:javax.sip.SipListener
```
public interface SipListener extends EventListener {
/**
* SIP服务端接收消息的方法
*/
void processRequest(RequestEvent var1);
/**
* SIP服务端接收返回的回调方法
*/
void processResponse(ResponseEvent var1);
/**
* 处理超时回调方法
*/
void processTimeout(TimeoutEvent var1);
/**
* 处理IO异常的回调方法
*/
void processIOException(IOExceptionEvent var1);
void processTransactionTerminated(TransactionTerminatedEvent var1);
void processDialogTerminated(DialogTerminatedEvent var1);
}
```
# 三、编写SIP监听实现类,并集成到springboot项目
```
/**
* @Author 授人以鳗鱼
* @Date 9/25/2019
*/
@Slf4j
@Configuration
public class SipSrymyConfig {
@Value("${gb28181.deviceId}")
String deviceId;
@Value("${gb28181.ip}")
String ip;
@Value("${gb28181.port}")
Integer port;
@Bean
public SipServerLayer sipLayer(SipSrymyMessageProcessor messageProcessor) {
try {
SipServerLayer sipServerLayer = new SipServerLayer(ip, port);
sipServerLayer.setMessageProcessor(messageProcessor);
log.info("SIP服务启动完毕, 已经在[{}:{}]端口监听SIP国标消息", ip, port);
return sipServerLayer;
} catch (PeerUnavailableException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
```
# 四、服务启动后,你可以用设备注册到这边,并抓包看看,你会发现SIP服务已经启动,整个网络已经联通,下一步我们需要把注册实现,[GB28181:基于JAVA的注册实现](https://www.jianshu.com/p/4b0963989bc3)
#五、有兴趣加群一起交流
扣 群 号:
5_4_1_4_1_0_1_3_2
# 六、源码csdn下载[GB28181:基于JAVA的注册实现](https://www.jianshu.com/p/4b0963989bc3)