62,614
社区成员
发帖
与我相关
我的任务
分享
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Temp {
public static void main(String[] args) throws Exception {
//TestServer(); // 这里先开启接收端,再开启发送端就可以了(如下图)
TestClient();
}
static void TestServer() throws Exception {
ServerSocket ss = new ServerSocket(8899);
System.out.println("等待连接中...");
Socket s = ss.accept();
InputStream is = s.getInputStream();
InputStreamReader isR = new InputStreamReader(is, "UTF-8"); // 这段是单字段接收
BufferedReader br = new BufferedReader(isR);
String strCom = "";
Thread.sleep(5000); // 设置延时接收。如果注释了这句和下面那句延时,就不会发生问题了......
while (true) {
// System.out.println(br.ready()); // 用于显示数据是否接收准备好,但实际发觉变化不定......
strCom = br.readLine();
if (" ".equals(strCom)) {
break;
}
System.out.println("接受内容:" + strCom);
Thread.sleep(1000);
strCom = "";
}
// ss.close(); // 接收端加不加这段影响不大。
}
static void TestClient() throws Exception {
InetAddress Address = InetAddress.getByName("127.0.0.1");
Socket socket = new Socket(Address, 8899);
OutputStream os = socket.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
String content = "";
for (int i = 0; i < 10; i++) {
content = "A" + i;
writer.write(content);
writer.newLine();
writer.flush();
System.out.println("发送内容:" + content);
Thread.sleep(100);
}
writer.write(" ");
writer.newLine();
writer.flush();
// writer.close(); // 不能关闭流,一但关闭流会连带关闭socket
// System.out.println(socket.isClosed());
// socket.close(); // 如果加上这句,接收端无论如何延时都能顺利接收,但这样就无法建立长连接了..........
}
}
package 用于提问贴出代码;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Temp2 {
public static void main(String[] args) throws Exception {
//TestServer();
TestClient();
}
static void TestServer() throws Exception {
ServerSocket ss = new ServerSocket(8899);
System.out.println("等待连接中...");
Socket s = ss.accept();
InputStream is = s.getInputStream();
InputStreamReader isR = new InputStreamReader(is, "UTF-8"); // 这段是单字段接收
BufferedReader br = new BufferedReader(isR);
String strCom = "";
Thread.sleep(5000); // 设置延时接收。如果注释了这句和下面那句延时,就不会发生问题了......
strCom = br.readLine();
System.out.println("接受内容:" + strCom);
// ss.close(); // 接收端加不加这段影响不大。
}
static void TestClient() throws Exception {
InetAddress Address = InetAddress.getByName("127.0.0.1");
Socket socket = new Socket(Address, 8899);
OutputStream os = socket.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
String content = "123456";
writer.write(content);
writer.newLine();
writer.flush();
System.out.println("发送内容:" + content);
// writer.close(); // 不能关闭流,一但关闭流会连带关闭socket
// System.out.println(socket.isClosed());
// socket.close(); // 如果加上这句,接收端无论如何延时都能顺利接收,但这样就无法建立长连接了..........
}
}