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
}
}
} 展开
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
}
}
} 展开
4个回答
展开全部
服务器端和客户端都是通过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));
这个只是用来获取一个从键盘的一个流.传送给服务器端的数据都是通过流来表示的。意思是是键盘输入的一个字节转化成字符流.并输出或者写入!
客户端要给服务器发送消息也必须产生一个socket实例,初始化的时候必须指定服务器的IP地址,并且指定服务接收的端口号,这样客户端才能找到服务器要接收的地方,找到地方就可以发送过去了。和你写信一样。找到地址
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
这个只是用来获取一个从键盘的一个流.传送给服务器端的数据都是通过流来表示的。意思是是键盘输入的一个字节转化成字符流.并输出或者写入!
展开全部
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!");
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
基于C/S(即客户端/服务器)模式的通信,有使用面向连接协议(TCP)协议进行的,也可以用面向无连接的UDP协议的。不过就上述程序来看,是TCP Socket了。客户端和服务器通过Socket方式进行通信,Socket可以形象地理解成一个介于服务器和客户端的通道,通道的两端均通过该通道读取和写入Message,程序中的BufferedReader和PrintWriter均为I/O流,只是适用的对象不同而已,BuffedrReader是字符流,需套接在字节流上,用于读取信息,socket.getInputStream()表明读取的对象是Socket中输入的信息,PrintWriter用于向Socke中打印信息。另外,System.out.println()方法用于向标准输出设备输出信息。理解该程序时,需搞明白向哪个对象中读取还是写入信息。稍微抽象一点,不过不是很难,再好好看看书,仔细琢磨琢磨,相信你能明白的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要说什么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |