//客户端(MyClient.java):import java.io.*;
import java.net.*;
public class MyClient
{
public static void main(String args[])
{
Socket client;
PrintStream psc;
System.out.println("连接成功");
while(true)
{
try
{
client = new Socket("localhost",1234);
psc = new PrintStream(client.getOutputStream());
BufferedReader bfc = new BufferedReader(new InputStreamReader(System.in));
psc.println(bfc.readLine());
BufferedReader brc = new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println("Server said:"+brc.readLine());
client.close();
brc.close();
}
catch(IOException e)
{
System.out.println(e);
}
}
}
}服务器端(MyServer.java):
import java.io.*;
import java.net.*;
public class MyServer
{
public static void main(String args[])
{
ServerSocket server;
PrintStream pss;
while(true)
{
try{
server = new ServerSocket(1234);
Socket sk = server.accept();
BufferedReader brs = new BufferedReader(new InputStreamReader(sk.getInputStream()));
System.out.println("Client said:"+brs.readLine());
pss = new PrintStream(sk.getOutputStream());
BufferedReader bfs = new BufferedReader(new InputStreamReader(System.in));
pss.println(bfs.readLine());
brs.close();
bfs.close();
server.close();
}
catch(IOException e)
{
System.out.println(e);
}
}
}
}以上分别是我的两个JAVA程序,实现的是客户与服务器之间进行对话,程序可以运行,但是互相输入两次信息之后,服务器端就会显示“地址被占用的错误提示”(大家可以试一下),请大家帮我解决一下这个问题,谢谢!!
import java.net.*;
public class MyClient
{
public static void main(String args[])
{
Socket client;
PrintStream psc;
System.out.println("连接成功");
while(true)
{
try
{
client = new Socket("localhost",1234);
psc = new PrintStream(client.getOutputStream());
BufferedReader bfc = new BufferedReader(new InputStreamReader(System.in));
psc.println(bfc.readLine());
BufferedReader brc = new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println("Server said:"+brc.readLine());
client.close();
brc.close();
}
catch(IOException e)
{
System.out.println(e);
}
}
}
}服务器端(MyServer.java):
import java.io.*;
import java.net.*;
public class MyServer
{
public static void main(String args[])
{
ServerSocket server;
PrintStream pss;
while(true)
{
try{
server = new ServerSocket(1234);
Socket sk = server.accept();
BufferedReader brs = new BufferedReader(new InputStreamReader(sk.getInputStream()));
System.out.println("Client said:"+brs.readLine());
pss = new PrintStream(sk.getOutputStream());
BufferedReader bfs = new BufferedReader(new InputStreamReader(System.in));
pss.println(bfs.readLine());
brs.close();
bfs.close();
server.close();
}
catch(IOException e)
{
System.out.println(e);
}
}
}
}以上分别是我的两个JAVA程序,实现的是客户与服务器之间进行对话,程序可以运行,但是互相输入两次信息之后,服务器端就会显示“地址被占用的错误提示”(大家可以试一下),请大家帮我解决一下这个问题,谢谢!!
解决方案 »
- 问个简单问题,下班结贴
- javamail收邮件,乱码问题...
- 我的作业题,有会的有不会的,大家帮个忙,关于数据类型的
- 日..期..问..题.. 如何获得某年某周的起始日期和结束日期 比如2005年第10周的起始日期和结束日期
- 很奇怪的一道题,希望大家帮忙看看是怎么回事
- 求助啊:已知圆的1/4弧的两端坐标(x1,y1),(x2,y2),以及圆的半径r.如何算出圆心
- Acme.JPM.Encoders包!
- 急求,请各位帮忙!
- 强烈要求新开Mobile Agent论坛
- 为什么我的jbuilde里面的代码编辑区的鼠标的滚动条不起作用了呀
- 关于字符串的一个问题
- 部署EJB是出现的错误 (50分 求救)
放到死循环里面 当然地址被占用了
import java.io.*;
import java.net.*;
public class MyServer
{
public static void main(String args[])
{
ServerSocket server=null;
BufferedReader brs =null;BufferedReader bfs=null;
PrintStream pss;
try {
server = new ServerSocket(1234);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
while(true)
{
try{
Socket sk = server.accept();
brs = new BufferedReader(new InputStreamReader(sk.getInputStream()));
System.out.println("Client said:"+brs.readLine());
pss = new PrintStream(sk.getOutputStream());
bfs = new BufferedReader(new InputStreamReader(System.in));
pss.println(bfs.readLine());
//brs.close();
//bfs.close();
//server.close();
}
catch(IOException e)
{
System.out.println(e);
}
}
}
}import java.io.*;
import java.net.*;
public class MyClient
{
public static void main(String args[])
{
Socket client;
PrintStream psc;
BufferedReader brc;
System.out.println("连接成功");
while(true)
{
try
{
client = new Socket("localhost",1234);
psc = new PrintStream(client.getOutputStream());
BufferedReader bfc = new BufferedReader(new InputStreamReader(System.in));
psc.println(bfc.readLine());
brc = new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println("Server said:"+brc.readLine());
//client.close();
//brc.close();
}
catch(IOException e)
{
System.out.println(e);
}
}
}
}
brs = new BufferedReader(new InputStreamReader(sk.getInputStream()));
System.out.println("Client said:"+brs.readLine());//-----在这里卡到了那边不发消息过来程序是走不下去的
pss = new PrintStream(sk.getOutputStream());
bfs = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client said:"+brs.readLine());//-----在这里卡到了那边不发消息过来程序是走不下去的
放到一个专读的线程中去,那样,它怎么卡怎么阻塞都不会影响主线程了。
import java.io.*;
import java.net.*;
public class MyClient
{
private static Socket client=null;
private static PrintStream psc=null;
private static BufferedReader brc=null;
public static void main(String args[])
{
boolean flag=false;
System.out.println("连接成功");
while(true)
{
try
{
client = new Socket("localhost",1234);
if (!flag) {
flag=true;
MyThread t=new MyThread();
t.start();
}
brc = new BufferedReader(new InputStreamReader(client.getInputStream()));
System.out.println("Server said:"+brc.readLine());
//client.close();
//brc.close();
}
catch(IOException e)
{
System.out.println(e);
}
}
}
class MyThread extends Thread{
public void run(){
psc = new PrintStream(client.getOutputStream());
while(true)
BufferedReader bfc = new BufferedReader(new InputStreamReader(System.in));
psc.println(bfc.readLine());
}
}
}