java 套接字编程 服务器端可以无限制发送信息给客户端 但是客户端只能发送一次信息

qq_36032153 2018-03-10 04:39:43
package Socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class TcpClient {

public static void main(String[] args) {
try {


Socket socket = new Socket("localhost", 8084);
System.out.println("***********Connect Success***********");

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

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

private static class ClientInputThread extends Thread {

private Socket socket;

private ClientInputThread(Socket socket) {
this.socket = socket;
}

public void run() {

try {
InputStream inputstream = socket.getInputStream();

while (true) {
byte[] buffer = new byte[1024];

int length = inputstream.read(buffer);

String str = new String(buffer, 0, length);

System.out.println(str);

}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

private static class ClientOutputhread extends Thread {
private Socket socket;

private ClientOutputhread(Socket socket) {
this.socket = socket;
}

public void run() {

try {
OutputStream outputstream = socket.getOutputStream();

while (true) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String line = reader.readLine();

line = "客户端:" + line;

outputstream.write(line.getBytes());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

}



package Socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {

public static void main(String[] args) throws IOException {
//服务器IP 目前是 localhost


ServerSocket serversocket = new ServerSocket(8084);

System.out.println("***********Server started***********");

while (true) {
Socket socket = serversocket.accept();

new ServerInputThread(socket).start();
new ServerOutThread(socket).start();
}
}

private static class ServerInputThread extends Thread {

private Socket socket;

public ServerInputThread(Socket socket) {
// TODO Auto-generated constructor stub
this.socket = socket;
}

public void run() {
try {
InputStream inputstream = socket.getInputStream();

byte [] buffer = new byte [1024];

int length = inputstream.read(buffer);

String information = new String(buffer,0,length);

System.out.println(information);


} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

}

private static class ServerOutThread extends Thread {
private Socket socket;

public ServerOutThread(Socket socket) {
// TODO Auto-generated constructor stub
this.socket = socket;
}

public void run() {

try {
OutputStream outputstream = socket.getOutputStream();

while(true) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String line = reader.readLine();

line = "服务器:" + line;

outputstream.write(line.getBytes());


}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
}

}
...全文
495 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱摸鱼de老邪 2018-03-10
  • 打赏
  • 举报
回复
服务端的接收进程一样也要放在while(true)循环中才能持续不断的接收客户端发来的消息。

private static class ServerInputThread extends Thread {

		private Socket socket;

		public ServerInputThread(Socket socket) {
			// TODO Auto-generated constructor stub
			this.socket = socket;
		}

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

		}

	}

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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