java Socket通信小栗子

本文详细阐述了如何使用Java实现Socket Server与Client之间的通信,包括初始化、接收客户端请求及响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

server端:

package com.test.socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServer {
public static void main(String[] args){
System.out.println("Server statring...");
SocketServer server = new SocketServer();
server.init();
}

public void init(){
try{
ServerSocket serverSocket = new ServerSocket(12345);
while(true){
System.out.println("socketClient...");
Socket socketClient = serverSocket.accept();
new HandlerThread(socketClient);
}
}catch(Exception e){
e.printStackTrace();
}
}

private class HandlerThread implements Runnable{
private Socket socket;
public HandlerThread(Socket client){
socket = client;
System.out.println("HandlerThread:" + client.toString());
new Thread(this).start();
}

@Override
public void run(){
try{
System.out.println("HandlerThread.run:");
DataInputStream input = new DataInputStream(socket.getInputStream());
byte clientInputBtye = input.readByte();
// String clientInputStr = input.readUTF();
// System.out.println("clientInputStr:" + clientInputStr);
System.out.println("clientInputBtye:" + clientInputBtye);

DataOutputStream out = new DataOutputStream(socket.getOutputStream());
byte[] b = {00, 00, 00, 00, 00, 06, 01, 03, 00, 10, 00, 73, 00};
// Clinet receiveStr:00 00 00 00 00 06 01 03 00 00 00 02 00
out.write(b, 0, b.length);

out.close();
input.close();
}catch(Exception e){
e.printStackTrace();
}finally{
if(socket != null){
try{
socket.close();
}catch(Exception e){
socket = null;
e.printStackTrace();
}
}
}
}
}

}



Client端

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.util.Properties;
public class SocketServer {
public static void main(String[] args){
// Get properties.
Properties configProperties = new Properties();
String propertiesURI = "/sysconfig.properties";
String[] addr = propertiesURI .split(":");
String receiveStr = "";
// String sendStr = "00 00 00 00 00 06 01 03 00 00 00 02";
byte[] sendByteArr = {00,00,00,00,00,06,01,03,00,00,00,02};

// Default create a stream socket; otherwise, create a datagram socket.
Socket socket = null;
try{
socket = new Socket(addr[0], Integer.parseInt(addr[1]));
socket.setSoTimeout(20 * 1000);

//Send str to server.
DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataOutputStream.write(sendByteArr, 0, sendByteArr.length);

// Receive str.
byte[] receiveBytes = new byte[13];
int receiveInt = dataInputStream.read(receiveBytes, 0, receiveBytes.length);
receiveStr = bytesToHexStr(receiveBytes);

dataOutputStream.close();
dataInputStream.close();
}catch (Exception e){
e.printStackTrace();
}finally {
if (socket != null) {
try {
socket.close();
}
catch (Exception e) {
socket = null;
e.printStackTrace();
}
}
}

return receiveStr;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值