您的位置:首页 > 理论基础 > 计算机网络

java网络编程之socket

2015-03-26 11:25 316 查看
基于tcp双向传输,socket编程共用信息流来接收和发送数据。

重点在于理解对不同端来说,输入与输出流的关系。对客户端来说,服务端的输出是客户端的输入。

对服务端来说,客户端的输出是服务端的输入。

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

public class Client {

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

//为了简单起见,所有的异常都直接往外抛
String host = "127.0.0.1";  //要连接的服务端IP地址
int port = 8899;   //要连接的服务端对应的监听端口
//与服务端建立连接
Socket client = new Socket(host, port);
//建立连接后就可以往服务端写数据了
BufferedReader is = new BufferedReader(new InputStreamReader(client.getInputStream()));

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

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

String s;
s = sin.readLine();
os.println(s);
os.flush();
System.out.println("Server:"+is.readLine());

os.close();
is.close();
client.close();
}

}


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

public class Server {

public static void main(String args[]) throws IOException {
//端口
int port = 8899;
//建立服务端socket
ServerSocket server = new ServerSocket(port);
Socket socket = server.accept();

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

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

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

String s = is.readLine();
//获取客户端的输入流
System.out.println("client:"+s);
if(s.equals("hello")){
os.println("你好");
os.flush();
}else{
System.out.println("bye");
}

is.close();
os.close();
socket.close();
server.close();
}

}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: