java socket 客户端是如何向服务器端发送消息的

服务器端代码packageteststock;importjava.io.BufferedReader;importjava.io.InputStreamReader;i... 服务器端代码
package teststock;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server2 {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(5678);

Socket client = server.accept();

System.out.println("接收到客户端的请求");
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));

PrintWriter out = new PrintWriter(client.getOutputStream());

while(true){
String str = in.readLine();
System.out.println(str);
out.print("has receive...");
out.flush();
if(str.toLowerCase().equals("end")){
break;
}
}
client.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}

客户端代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class Client2 {

static Socket socket;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
socket = new Socket(InetAddress.getLocalHost(),5678);

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter out = new PrintWriter(socket.getOutputStream());

BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));

while(true){
String str = wt.readLine();

System.out.println("客户端输入"+str);

out.print(str);

out.flush();

if(str.toLowerCase().equals("end")){
break;
}
// System.out.println(in.readLine());
}
socket.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
展开
 我来答
百度网友79bb6fa7f
2011-01-05 · 超过19用户采纳过TA的回答
知道答主
回答量:67
采纳率:0%
帮助的人:0
展开全部
服务器端和客户端都是通过SOCKET来进行通信的,首先产生一个 socket实例,通过这个实例,服务器端调用accept这个方法接收来自客户端发送的信息.但是在产生socket实例的时候必须初始化一个端口.用来负责接受客户端的请求!
客户端要给服务器发送消息也必须产生一个socket实例,初始化的时候必须指定服务器的IP地址,并且指定服务接收的端口号,这样客户端才能找到服务器要接收的地方,找到地方就可以发送过去了。和你写信一样。找到地址
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter out = new PrintWriter(socket.getOutputStream());

BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
这个只是用来获取一个从键盘的一个流.传送给服务器端的数据都是通过流来表示的。意思是是键盘输入的一个字节转化成字符流.并输出或者写入!
小傻

2015-10-23 · 知道合伙人软件行家
小傻
知道合伙人软件行家
采纳数:11567 获赞数:31134
已经做过两个上架的app和两个网页项目.

向TA提问 私信TA
展开全部

java socket客户端向服务器端发送消息,可以使用socket类,实例如下:



mport java.io.*;
import java.net.*;

public class EchoClient {

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

          Socket connection =new Socket("127.0.0.1", 5050);
          BufferedReader input = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
             
             PrintWriter out = new PrintWriter(connection.getOutputStream(),true );
             String info;
             info = input.readLine();
             System.out.println(info);
             boolean done = false;
             BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
             String sInput;
             
             //out.println("BYE");

             while (!done) {
             

                 info = input.readLine();
                 System.out.println(info);
                 
             }
             connection.close();
         }
         catch (SecurityException e) {
             System.out.println("SecurityException when connecting Server!");
         }
         catch (IOException e) {
             System.out.println("IOException when connecting Server!");
         }
     }

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chzh_01
2011-01-05 · 超过16用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:29.7万
展开全部
基于C/S(即客户端/服务器)模式的通信,有使用面向连接协议(TCP)协议进行的,也可以用面向无连接的UDP协议的。不过就上述程序来看,是TCP Socket了。客户端和服务器通过Socket方式进行通信,Socket可以形象地理解成一个介于服务器和客户端的通道,通道的两端均通过该通道读取和写入Message,程序中的BufferedReader和PrintWriter均为I/O流,只是适用的对象不同而已,BuffedrReader是字符流,需套接在字节流上,用于读取信息,socket.getInputStream()表明读取的对象是Socket中输入的信息,PrintWriter用于向Socke中打印信息。另外,System.out.println()方法用于向标准输出设备输出信息。理解该程序时,需搞明白向哪个对象中读取还是写入信息。稍微抽象一点,不过不是很难,再好好看看书,仔细琢磨琢磨,相信你能明白的!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Bamboo_0429
2011-01-05 · TA获得超过241个赞
知道小有建树答主
回答量:826
采纳率:0%
帮助的人:379万
展开全部
你要说什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式