java socket发送消息_Java 如何在建立 Socket 通信后主动向 C#客户端发送信息

该博客演示了如何使用 Java 的 Socket API 与 C# 客户端进行持续的消息传递。Java 服务器端通过 `ServerSocket` 接收连接,并创建 `ServerThread` 处理每个客户端请求,周期性地发送消息。Java 客户端则持续打开 Socket 连接,不断接收并打印服务器发送的消息,实现双向通信。示例代码展示了如何使用 `PrintWriter` 和 `BufferedReader` 进行数据的发送和接收。
摘要由CSDN通过智能技术生成

@苍之弦: 你看下我之前写的demo吧,不把socket关掉就可以一直发消息:

package tx;

import java.io.*;

import java.net.Socket;

public class Client {

public static void main(String[] args) {

try {

Socket socket = new Socket("127.0.0.1", 6666);

String str = "客户端请求连接";

while (true){

OutputStream outputStream = socket.getOutputStream();

InputStream inputStream = socket.getInputStream();

PrintWriter printWriter = new PrintWriter(outputStream, true);

printWriter.println(str);

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

System.out.println(bufferedReader.readLine());

// socket.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

package tx;

import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

public class Server {

public static void main(String[] args) {

try {

ServerSocket serverSocket = new ServerSocket(6666);

Socket socket = null;

//等待套接字响应获取连接

while (true){

socket = serverSocket.accept();

new ServerThread(socket);

Thread.sleep(3000);

ServerThread.sendMessage("服务器发送消息---------------11111");

Thread.sleep(3000);

ServerThread.sendMessage("服务器发送消息---------------22222");

Thread.sleep(3000);

ServerThread.sendMessage("服务器发送消息---------------333");

}

} catch (IOException e) {

e.printStackTrace();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

package tx;

import java.io.*;

import java.net.Socket;

public class ServerThread extends Thread {

private static Socket socket;

private InputStream inputStream;

private OutputStream outputStream;

public ServerThread(Socket aSocket) throws IOException {

this.socket = aSocket;

this.inputStream = aSocket.getInputStream();

this.outputStream = aSocket.getOutputStream();

this.start();

}

public void run(){

//输入流缓存

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

String str;

try {

//读取一行数据

String strLine = bufferedReader.readLine();

System.out.println(strLine);

PrintWriter printWriter = new PrintWriter(outputStream, true);

printWriter.println("连接成功!");

// inputStream.close();

// outputStream.close();

// socket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void sendMessage(String s) throws IOException {

PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);

printWriter.println("服务器发送消息:"+ s);

}

}

5d35195fe7122f5f22b19a2bb65b145d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值