java网络编程:基于TCP的socket编程

来源:互联网 发布:平板电脑可以开淘宝店 编辑:程序博客网 时间:2024/05/17 17:17

服务器程序编写:

①调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上;②调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。③调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。④最后关闭通信套接字。

客户端程序编写:

①调用Socket()创建一个流套接字,并连接到服务器端; ②调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。 ③最后关闭通信套接字。

 

下面给出多线程的实现:

服务器端:

package socket;import java.net.ServerSocket;import java.net.Socket;public class TCPServer {public static void server() {try {// 创建serversocket,绑定端口      ServerSocket ss=new ServerSocket(6000);      while(true)      {      //accept()函数处于阻塞状态,直到收到客户端的连接        Socket s = ss.accept();        //多线程处理机制,每当收到一个链接,就创建一个新的线程去处理它        new Network(s).start();      }      //ss.close();    }    catch (Exception ex) {      ex.printStackTrace();    }  }public static void main(String[] args) {// TODO Auto-generated method stubserver();}}


 

package socket;import java.io.BufferedOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;public class Network extends Thread {private Socket s;  public Network(Socket s)  {    this.s=s;  }public void run()  {    try {      OutputStream os=s.getOutputStream();      //输出流采用缓冲机制      BufferedOutputStream bos=new BufferedOutputStream(os);      InputStream is=s.getInputStream();      bos.write("hi,welcome you!".getBytes());      //flush()函数强制缓冲区的内容输出,如果不用此函数,只有当缓冲区满后才输出      bos.flush();      byte[] buf=new byte[100];      int len=is.read(buf);      System.out.println(new String(buf,0,len));      os.close();      bos.close();      is.close();      s.close();    }    catch (Exception ex) {      ex.printStackTrace();    }  }}


客户端:

package socket;import java.io.InputStream;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;public class TCPClient {public static void client()  {    try {    //客户端创建Socket对象,传入服务器端的地址和端口号      Socket s=new Socket(InetAddress.getByName(null),6000);      OutputStream os=s.getOutputStream();      InputStream is=s.getInputStream();      byte[] buf=new byte[100];      int len=is.read(buf);      System.out.println(new String(buf,0,len));      os.write("Hi,this is client".getBytes());      os.close();      is.close();      s.close();    }    catch (Exception ex) {      ex.printStackTrace();    }  }public static void main(String[] args) {// TODO Auto-generated method stubclient();}}


 

0 0
原创粉丝点击