Socket和ServerSocket是怎样接收消息的? Socket和ServerSocket是怎样接收消息的?例如:客户端发送一条消息 服务端是怎样知道它发送过来了?服务端怎样给客户端发消息的求相关类的方法求完整详解~!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ServerSocket在一个端口上监听,有消息过来时自然就会知道。ServerSocket知道有客户端访问之后,自然就能得到这个客户端,也能得到客户端Socket的实例,只要能得到与客户端Socket相关联的流,在往流里写入数据,就能实现服务器给客户端发消息。给你一个小例子:Clientimport java.io.*;import java.net.*;public class Client { public static void main(String args[]) { try{ Socket socket=new Socket("127.0.0.1",4700); BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); PrintWriter os=new PrintWriter(socket.getOutputStream()); BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); String readline; readline=sin.readLine(); while(!readline.equals("bye")){ os.println(readline); os.flush(); System.out.println("Client:"+readline); System.out.println("Server:"+is.readLine()); readline=sin.readLine(); } os.close(); is.close(); socket.close(); }catch(Exception e) { System.out.println("Error"+e); } }}Server:import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class Server extends Thread{ public static void main(String args[]){ try{ ServerSocket server=null; try{ //while(true) server=new ServerSocket(4700); }catch(Exception e) { System.out.println("can not listen to:"+e); } Socket socket=null; try{ socket=server.accept(); }catch(Exception e) { System.out.println("Error."+e); } String line; BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter os=new PrintWriter(socket.getOutputStream()); BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Client:"+is.readLine()); line=sin.readLine(); while(!line.equals("bye")){ os.println(line); os.flush(); System.out.println("Server:"+line); System.out.println("Client:"+is.readLine()); line=sin.readLine(); } os.close(); is.close(); socket.close(); server.close(); }catch(Exception e){ System.out.println("Error:"+e); } }} 看TCP/IP四层协议吧,由传输层递交数据给应用层 1L正解BufferedReader和PringWriter 这是最简单的你也可以直接读写 InputStream和OutputStream 大牛级别的就是不一样。直接来协议了虽然我看过TCP/IP的协议 但是我还是不是很清楚。我表示大一学生看起有压力 线程sleep()抛异常问题 java数据库中怎么将一个表包装成一个类 (初学java数据库编程) 怎么取消界面右上角的最小化功能 一个关于持有堆内存类赋值的简单问题,请各位赐教。 请问如何在java中传输音频流时该怎样压缩会比较快呢? JAVA真的输了吗? (强烈推荐) 简单问题,不过好像也不简单 寻求Java较快的编译器?(JDK太慢了) 不通版本的JDK能否同时装上? 如何取得鼠标相对于屏幕的坐标,(包括鼠标在桌面上时)相当于winapi的getcursor?? 求保存对象的方法 帮帮忙!哪里错了!怎么读出double类型数据
ServerSocket知道有客户端访问之后,自然就能得到这个客户端,也能得到客户端Socket的实例,只要能得到与客户端Socket相关联的流,在往流里写入数据,就能实现服务器给客户端发消息。
给你一个小例子:
Clientimport java.io.*;
import java.net.*;public class Client {
public static void main(String args[]) {
try{
Socket socket=new Socket("127.0.0.1",4700);
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
PrintWriter os=new PrintWriter(socket.getOutputStream());
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readline;
readline=sin.readLine();
while(!readline.equals("bye")){
os.println(readline);
os.flush();
System.out.println("Client:"+readline);
System.out.println("Server:"+is.readLine());
readline=sin.readLine();
}
os.close();
is.close();
socket.close();
}catch(Exception e) {
System.out.println("Error"+e);
}
}
}Server:import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;public class Server extends Thread{
public static void main(String args[]){
try{
ServerSocket server=null;
try{
//while(true)
server=new ServerSocket(4700);
}catch(Exception e) {
System.out.println("can not listen to:"+e);
}
Socket socket=null;
try{
socket=server.accept();
}catch(Exception e) {
System.out.println("Error."+e);
}
String line;
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter os=new PrintWriter(socket.getOutputStream());
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Client:"+is.readLine());
line=sin.readLine();
while(!line.equals("bye")){
os.println(line);
os.flush();
System.out.println("Server:"+line);
System.out.println("Client:"+is.readLine());
line=sin.readLine();
}
os.close();
is.close();
socket.close();
server.close();
}catch(Exception e){
System.out.println("Error:"+e);
}
}
}
BufferedReader和PringWriter 这是最简单的你也可以直接读写 InputStream和OutputStream
大牛级别的就是不一样。直接来协议了虽然我看过TCP/IP的协议 但是我还是不是很清楚。我表示大一学生看起有压力