各位老师请教个关于Socket实现双向通信的问题,直接贴代码吧
server端:import java.net.*;
import java.io.*;class TalkServer
{
public static void main(String[] args) {
try
{
ServerSocket server = new ServerSocket(5000);
while (true)
{
Socket client = server.accept();
PrintWriter pw = new PrintWriter(client.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println("hha");
pw.write("server已通过你的连接");
pw.flush();
System.out.println("haha");
/*System.out.println(br.readLine());
System.out.println("haha");
br.close();*/ //这段内容注释掉程序运行完全正常,只有这段话启用了server和client就一直傻傻的等待
pw.close();
client.close();
}
}
catch (IOException e)
{
System.out.println("error:" + e);
}
}
}client端:import java.net.*;
import java.io.*;class TalkClient
{
public static void main(String[] args) {
try
{
Socket client = new Socket("localhost",5000);
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter pw = new PrintWriter(client.getOutputStream());
System.out.println("hhah");
System.out.println(br.readLine());
System.out.println("haha");
pw.write("你好server");
pw.flush();
pw.close(); br.close();
client.close();
}
catch (IOException e)
{
System.out.println("error:" + e);
} }
}ctrl+c后打印的信息是:
D:\java\socket>java TalkServer
hha
haha
error:java.net.SocketException: Connection reset这应该是属于哪里的问题呢
server端:import java.net.*;
import java.io.*;class TalkServer
{
public static void main(String[] args) {
try
{
ServerSocket server = new ServerSocket(5000);
while (true)
{
Socket client = server.accept();
PrintWriter pw = new PrintWriter(client.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println("hha");
pw.write("server已通过你的连接");
pw.flush();
System.out.println("haha");
/*System.out.println(br.readLine());
System.out.println("haha");
br.close();*/ //这段内容注释掉程序运行完全正常,只有这段话启用了server和client就一直傻傻的等待
pw.close();
client.close();
}
}
catch (IOException e)
{
System.out.println("error:" + e);
}
}
}client端:import java.net.*;
import java.io.*;class TalkClient
{
public static void main(String[] args) {
try
{
Socket client = new Socket("localhost",5000);
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter pw = new PrintWriter(client.getOutputStream());
System.out.println("hhah");
System.out.println(br.readLine());
System.out.println("haha");
pw.write("你好server");
pw.flush();
pw.close(); br.close();
client.close();
}
catch (IOException e)
{
System.out.println("error:" + e);
} }
}ctrl+c后打印的信息是:
D:\java\socket>java TalkServer
hha
haha
error:java.net.SocketException: Connection reset这应该是属于哪里的问题呢
BufferedWriter.newLine()
这个2个才是,上面的方法名记错了
///代码没问题,少了个回车符,代表一行的结束是回车符
import java.net.*;
import java.io.*;class TalkServer { public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(5000);
while (true) {
Socket client = server.accept();
PrintWriter pw = new PrintWriter(client.getOutputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println("hha");
pw.write("server已通过你的连接\n");///////这里加个回车,分行
pw.flush();
System.out.println("haha");
System.out.println(br.readLine());
System.out.println("haha");
br.close(); //这段内容注释掉程序运行完全正常,只有这段话启用了server和client就一直傻傻的等待
pw.close();
client.close();
// server.close();
}
} catch (IOException e) {
System.out.println("error:" + e);
} }
}import java.net.*;
import java.io.*;class TalkClient { public static void main(String[] args) {
try {
Socket client = new Socket("localhost", 5000);
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream())); PrintWriter pw = new PrintWriter(client.getOutputStream());
System.out.println("hhah");
System.out.println(br.readLine());
System.out.println("haha");
pw.write("你好server\n");///////这里加个回车,分行
pw.flush();
pw.close(); br.close();
client.close();
} catch (IOException e) {
System.out.println("error:" + e);
} }
}