首页 > 代码库 > Socket网络编程
Socket网络编程
使用Socket可以非常方便的进行通信,主要分成两个部分:
第一个部分ServerSocket,服务端等待客户端的连接;
第二个部分Socket,客户端连接服务端。
ServerSocket的使用方法如下
int port=23456;ServerSocket server=new ServerSocket(port);while(true){//等待客户端的连接 Socket ss=server.accept(); //收取客户端发送来的消息 BufferedReader br=new BufferedReader(new InputStreamReader(ss.getInputStream())); String line=br.readLine(); System.out.println(line);}
Socket的使用方法如下
String ip="192.168.1.113";int port=23456;Socket socket=new Socket(ip,port);//发送消息给服务端OutputStream os=socket.getOutputStream();os.write("你好".getBytes("utf-8"));os.close();
当服务端和客户端建立连接之后,可以互相发送消息和收取消息,
使用getOutputStream()方法进行发送消息,getInputStream()方法进行接收消息。
由于网络操作响应时间不确定,因此把这类操作放入新线程当中,以避免主程序长时间阻塞。
以下是对socket操作的封装类,并且将网络操作放入了新线程当中。
public class MySocket { private int port; private ServerSocket server; private List<Message> msgList; public MySocket(int port){ this.port=port; msgList=new ArrayList<Message>(); try{ server=new ServerSocket(port); acceptThread.start();//开启接受信息线程 }catch(Exception e){ e.printStackTrace(); } } //发送消息线程 public void send(Message msg){ Thread sendThread=new Thread(){ @Override public void run() { super.run(); try { Socket socket = new Socket(msg.getIp(),msg.getPort()); OutputStream os=socket.getOutputStream(); os.write(msg.getContent().getBytes("utf-8")); os.close(); socket.close(); }catch (IOException e) { e.printStackTrace(); } } }; sendThread.start(); } //接受信息的线程 private Thread acceptThread=new Thread(){ @Override public void run() { super.run(); while(true){ try { Socket socket=server.accept(); InputStream is=socket.getInputStream(); String content=new BufferedReader(new InputStreamReader(is)).readLine(); Message message=new Message(); message.setIp(socket.getInetAddress().toString()); message.setPort(socket.getPort()); message.setContent(content); msgList.add(message); System.out.println(message.getContent()); is.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } };}
其中所使用到的Message类如下
public class Message { private String ip;//ip地址 private int port;//端口号 private String content;//信息内容 public Message(){ } public Message(String ip,int port,String content){ this.ip=ip; this.port=port; this.content=content; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
Socket网络编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。