网络编程问题

aaaabbbccd9876 2012-10-19 08:13:41
服务端import java.net.*;
import java.io.*;
class fanserver
{
public static void main(String[] args)throws Exception
{
ServerSocket ss = new ServerSocket(4444);
Socket s = ss.accept();
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bwout =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader brin =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String line=null;
while((line=br.readLine())!=null){
// System.out.println(line);
bwout.write(line);
bwout.newLine();
bwout.flush();
}
s.shutdownOutput();
String str = null;
while((str=brin.readLine())!=null){
System.out.println(str);
}


}
}
客户端
import java.net.*;
import java.io.*;
class fanclient
{
public static void main(String[] args)throws Exception
{
Socket s = new Socket("192.168.30.129",4444);
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bwout =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader brin =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String line = null;
while((line=brin.readLine())!=null){
System.out.println(line);
}
String str = null;
while((str=br.readLine())!=null){

bwout.write(str);
bwout.newLine();
bwout.flush();
// String line = brin.readLine();
// System.out.println(line);
}
// s.shutdownOutput();

// String line = brin.readLine();
// System.out.println(line);

}
}
服务端课键盘录入,客户端也收的到,但是客户端不可以键盘录入,为什么啊,我知道应该是阻塞方法的原因,但是我不知道在哪里,怎么改,求大侠帮忙啊
...全文
196 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
z744489075 2012-10-20
  • 打赏
  • 举报
回复
服务端先读后写 客户端先写后读 你的逻辑出错了
z744489075 2012-10-20
  • 打赏
  • 举报
回复
服务端先的接受客服端的数据才能往会写 逻辑出错了
rockets311 2012-10-20
  • 打赏
  • 举报
回复
建议用线程控制。。。
aaaabbbccd9876 2012-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
服务端先读后写 客户端先写后读 你的逻辑出错了
[/Quote]这个说法不对,我该了位置是这样的
//服务端
import java.net.*;
import java.io.*;
class fanserver1
{
public static void main(String[] args)throws Exception
{
ServerSocket ss = new ServerSocket(4444);
Socket s = ss.accept();
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bwout =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader brin =
new BufferedReader(new InputStreamReader(s.getInputStream()));
String str = null;
while((str=brin.readLine())!=null){
System.out.println(str);
}
String line=null;
while((line=br.readLine())!=null){
// System.out.println(line);
bwout.write(line);
bwout.newLine();
bwout.flush();
}
s.shutdownOutput();




}
}
//客户端

class fanclient1
{
public static void main(String[] args)throws Exception
{
Socket s = new Socket("192.168.30.129",4444);
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bwout =
new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader brin =
new BufferedReader(new InputStreamReader(s.getInputStream()));

String str = null;
while((str=br.readLine())!=null){

bwout.write(str);
bwout.newLine();
bwout.flush();
// String line = brin.readLine();
// System.out.println(line);
}
// s.shutdownOutput();
String line = null;
while((line=brin.readLine())!=null){
System.out.println(line);
}
// String line = brin.readLine();
// System.out.println(line);

}
}
客户端发信息,服务端接收的到,但是服务端就不能录入键盘
aimsgmiss 2012-10-19
  • 打赏
  • 举报
回复
2 楼怎么运行呢
zhaoming262350 2012-10-19
  • 打赏
  • 举报
回复
用线程控制就可以实现了:

客户端:
import java.io.IOException;
import java.net.Socket;


public class MainClient
{
public static void main(String [] args) throws Exception,IOException
{

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

new ClientInputThread(socket).start();
new ClientOutputThread(socket).start();

}
}





客户端输入:
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;

public class ClientInputThread extends Thread

{
private Socket socket;
public ClientInputThread(Socket socket)
{
this.socket = socket;
}
public void run()
{
try {
InputStream is = socket.getInputStream();

while(true)
{
byte [] buffer = new byte[1024];
int length = is.read(buffer);
String str = new String(buffer,0,length);
System.out.println(str);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}




客户端输出线:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;

public class ClientOutputThread extends Thread
{
private Socket socket;
public ClientOutputThread(Socket socket)
{
this.socket = socket;
}
public void run()
{
try {
OutputStream os = socket.getOutputStream();
while(true)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String line = reader.readLine();
os.write(line.getBytes());
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}






服务器:

import java.net.ServerSocket;
import java.net.Socket;

public class MainServer
{


public static void main(String [] args) throws Exception
{



ServerSocket serverSocket = new ServerSocket(4000);
while(true)
{
Socket socket = serverSocket.accept();
new ServerInputThread(socket).start();
new ServerOutputThread(socket).start();
}
}

}



服务器输入:
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;

public class ServerInputThread extends Thread
{
private Socket socket;
public ServerInputThread(Socket socket)
{
this.socket = socket;
}
public void run()
{

try {
InputStream is = socket.getInputStream();
while(true)
{
byte[] buffer = new byte[1024];
int length = is.read(buffer);
String str = new String(buffer,0,length);
System.out.println(str);
}
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}





服务器输出:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;


public class ServerOutputThread extends Thread
{
private Socket socket;

public ServerOutputThread(Socket socket)
{
this.socket = socket;
}
public void run()
{
try
{
OutputStream os = socket.getOutputStream();
while(true)
{
BufferedReader reader = new BufferedReader (new InputStreamReader(System.in));
String line = reader.readLine();
os.write(line.getBytes());
}
}
catch(IOException e)
{
e.printStackTrace();
}
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧