java监听某端口和ip_Java 通过Socket监听指定服务器(IP)的指定端口,及向指定服务器的指定端口发送信息...
客戶端:向指定端口發送信息
package com.jszc.lottery.modules.longpay.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import com.jszc.lottery.common.utils.MakeOrderNumUtil;
public class RECV_UBANKNO {
public String go(String xmlInfo) throws UnknownHostException, IOException {
// 向服務器端發送請求,服務器IP地址和服務器監聽的端口號
Socket client = new Socket("192.168.1.125", 12345);
// 通過printWriter 來向服務器發送消息
PrintWriter printWriter = new PrintWriter(client.getOutputStream());
System.out.println("連接已建立...");
// 發送消息
printWriter.println(xmlInfo);
printWriter.flush();
// InputStreamReader是低層和高層串流之間的橋梁
// client.getInputStream()從Socket取得輸入串流
InputStreamReader streamReader = new InputStreamReader(client.getInputStream());
// 鏈接數據串流,建立BufferedReader來讀取,將
//BufferReader鏈接到InputStreamReder
BufferedReader reader = new BufferedReader(streamReader);
String advice = reader.readLine();
reader.close();
return advice;
}
public static void main(String[] args) throws UnknownHostException,IOException {
StringBuilder sb = new StringBuilder();
sb.append("balabala");
// 提交請求
String utf8 = new String(sb.toString().getBytes("UTF-8"));
String unicode = new String(utf8.getBytes(), "UTF-8");
String gbk = new String(unicode.getBytes("GB2312"));
// String xml = new String();//GB18030
RECV_UBANKNO c = new RECV_UBANKNO();
String advice = c.go(gbk);
System.out.println("接收到服務器的消息 :" + advice);
}
}
package com.jszc.lottery.modules.longpay.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import com.jszc.lottery.common.utils.MakeOrderNumUtil;
public class RECV_UBANKNO {
public String go(String xmlInfo) throws UnknownHostException, IOException {
// 向服務器端發送請求,服務器IP地址和服務器監聽的端口號
Socket client = new Socket("192.168.1.125", 12345);
// 通過printWriter 來向服務器發送消息
PrintWriter printWriter = new PrintWriter(client.getOutputStream());
System.out.println("連接已建立...");
// 發送消息
printWriter.println(xmlInfo);
printWriter.flush();
// InputStreamReader是低層和高層串流之間的橋梁
// client.getInputStream()從Socket取得輸入串流
InputStreamReader streamReader = new InputStreamReader(
client.getInputStream());
// 鏈接數據串流,建立BufferedReader來讀取,將BufferReader鏈接到InputStreamReder
BufferedReader reader = new BufferedReader(streamReader);
String advice = reader.readLine();
reader.close();
return advice;
}
public static void main(String[] args) throws UnknownHostException,
IOException {
// 拼接xml報文
/*
* * 請求序列碼 客戶號
* 操作員號 密碼
* 6W0201 CN *
*/
StringBuilder sb = new StringBuilder();
MakeOrderNumUtil makeOrderNumUtil = new MakeOrderNumUtil();
makeOrderNumUtil.makeOrderNum();
String num = makeOrderNumUtil.makeOrderNum();
sb.append(" ");
sb.append("");
sb.append("" + num + "");// 請求序列碼
sb.append("ZJ33000009175763101");// 客戶號
sb.append("WLPT01");// 操作員號
sb.append("123456");// 密碼
sb.append("6W0201");// 交易請求碼
sb.append("CN ");// 語言
sb.append("");
sb.append("");
sb.append("");
// 提交請求
/*
* 4、發送報文兼容GB2312和GB18030編碼格式,返回報文為GB18030編碼格式,
* 另需要測試一下發送報文編碼格式為GB18030的情況下交易是否OK。
*/
String utf8 = new String(sb.toString().getBytes("UTF-8"));
String unicode = new String(utf8.getBytes(), "UTF-8");
String gbk = new String(unicode.getBytes("GB2312"));
// String xml = new String();//GB18030
RECV_UBANKNO c = new RECV_UBANKNO();
String advice = c.go(gbk);
System.out.println("接收到服務器的消息 :" + advice);
}
}
服務器端,監聽指定端口:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketService {
//搭建服務器端
public static void main(String[] args) throws IOException{
SocketService socketService = new SocketService();
//1、a)創建一個服務器端Socket,即SocketService
socketService.oneServer();
}
public void oneServer(){
try{
ServerSocket server=null;
try{
server=new ServerSocket(12347);
//b)指定綁定的端口,并監聽此端口。
System.out.println("服務器啟動成功");
//創建一個ServerSocket在端口5209監聽客戶請求
}catch(Exception e) {
System.out.println("沒有啟動監聽:"+e);
//出錯,打印出錯信息
}
Socket socket=null;
try{
socket=server.accept();
//2、調用accept()方法開始監聽,等待客戶端的連接
//使用accept()阻塞等待客戶請求,有客戶
//請求到來則產生一個Socket對象,并繼續執行
}catch(Exception e) {
System.out.println("Error."+e);
//出錯,打印出錯信息
}
//3、獲取輸入流,并讀取客戶端信息
String line;
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket對象得到輸入流,并構造相應的BufferedReader對象
PrintWriter writer=new PrintWriter(socket.getOutputStream());
//由Socket對象得到輸出流,并構造PrintWriter對象
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由系統標準輸入設備構造BufferedReader對象
System.out.println("Client:"+in.readLine());
//在標準輸出上打印從客戶端讀入的字符串
line=br.readLine();
//從標準輸入讀入一字符串
//4、獲取輸出流,響應客戶端的請求
while(!line.equals("end")){
//如果該字符串為 "bye",則停止循環
writer.println(line);
//向客戶端輸出該字符串
writer.flush();
//刷新輸出流,使Client馬上收到該字符串
System.out.println("Server:"+line);
//在系統標準輸出上打印讀入的字符串
System.out.println("Client:"+in.readLine());
//從Client讀入一字符串,并打印到標準輸出上
line=br.readLine();
//從系統標準輸入讀入一字符串
} //繼續循環
//5、關閉資源
writer.close(); //關閉Socket輸出流
in.close(); //關閉Socket輸入流
socket.close(); //關閉Socket
server.close(); //關閉ServerSocket
}catch(Exception e) {//出錯,打印出錯信息
System.out.println("Error."+e);
}
}
}
總結
以上是生活随笔為你收集整理的java监听某端口和ip_Java 通过Socket监听指定服务器(IP)的指定端口,及向指定服务器的指定端口发送信息...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中上传附件怎么该名称_将附件保存
- 下一篇: hibernate h2变mysql_懒