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

Java 网络编程之socket实例

2017-07-26 17:59 477 查看
Java中的网络通信是通过Socket来实现的,socket分为ServerSocket和Socket两大类,ServerSocket用于服务端,可以通过accept方法监听请求,监听到请求返回Socket,Socket用于用于完成数据传输,客户端使用Socket发起请求并传输数据。

1.ServerSocket简单示例

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

public class serversocket {

public static void main(String[] args) {
ServerSocket server=null;
Socket socket=null;
BufferedReader in=null;
try {
//创建一个ServerSocket监听3355端口
server = new ServerSocket(3355);
//等待请求
socket=server.accept();
//接受到请求后用socket进行通讯,创建BufferReader用于读取数据
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//按行读取
String line=in.readLine();
System.out.println("reveivered from client:"+line);

//创建PrintWriter用于发送数据
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.println("receiverd data:"+line);
//发送
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try{
//从后往前挨个关闭
in.close();
socket.close();
server.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}

2.Socket简单示例

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class socket {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String msg=sc.nextLine();
Socket socket=null;
BufferedReader in=null;
PrintWriter pw=null;
try {
//创建一个socket和本机的3355端口连接
socket=new Socket("127.0.0.1",3355);
//使用Soket创建PrintWriter和BufferedReader进行读写数据
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(socket.getOutputStream());
//发送数据
pw.println(msg);
pw.flush();
//接受数据
String line = in.readLine();
System.out.println("received from server:"+line);
} catch (IOException e) {
e.printStackTrace();
}finally{
//关闭资源
try {
pw.close();
in.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息