当前位置:编程学习 > JAVA >>

赵雅智_java 网络编程(2)之TCP

TCP:客户端服务端

服务端:

ServerSocket:编写TCP网络服务程序,首先要用到java.net.ServerSocket类用以创建服务器Socket

构造方法:

ServerSocket(int port):创建绑定到特定端口的服务器套接字
ServerSocket(int port, int backlog):利用指定的backlog(服务器忙时保持连接请求的等待客户数量),创建服务器套接字并将其绑定到指定的本地端口号。
ServerSocket(int port, int backlog, InetAddress bindAddr):使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。
常用方法:

Socket accept():侦听并接受到此套接字的连接。
boolean isBound():返回 ServerSocket 的绑定状态。
InetAddress getInetAddress():返回此服务器套接字的本地地址。
boolean isClosed():返回 ServerSocket 的关闭状态。
void close():关闭此套接字。
void bind(SocketAddress endpoint):将ServerSocket 绑定到特定地址(IP 地址和端口号)。
客户端:

Socket:客户端要与服务器建立连接,必须先创建一个Socket对象

常用构造方法

Socket(String host, int port):创建一个流套接字并将其连接到指定主机上的指定端口号。
Socket(InetAddress address, int port):创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
常用方法

InetAddress getInetAddress():返回套接字连接的地址。
int getPort():返回此套接字连接到的远程端口。
InetAddress getlocalAddress():获取套接字绑定的本地地址。
int getLocalPort():返回此套接字绑定到的本地
void close():返回此套接字的输入流。
InputStream getInputStream():返回此套接字的输入流。
OutputStream getOutputStream():返回此套接字的输出流。
服务器端程序调用ServerSocket类中的accept()方法等待客户端的连接请求,一旦accept()接收了客户端连接请求,该方法返回一个与该客户端建立了专线连接的Socket对象,不用程序去创建这个Socket对象。建立了连接的两个Socket是以IO流的方式进行数据交换的,Java提供了Socket类中的getInputStream()返回Socket的输入流对象,getOutputStream()返回Socket的输出流对象。


先开服务端(service)在开客户端(client)

否则会出现错误,如下:

 

 \

实例1:客户端与服务端

客户端:

[java]
package src.com.hbsi.net; 
 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.Socket; 
 
public class TcpClient { 
 
    /**
     * @param args
     */ 
    public static void main(String[] args) throws Exception{ 
        //1.建立tcp客户端socket,要确定要连接的服务器ip,port  
        Socket s=new Socket("192.168.49.59",9009); 
         
        //2.通过建立的socket,获取输出流对象  
        OutputStream out=s.getOutputStream(); 
         
        out.write("wo lai le".getBytes()); 
         
        //读取服务器端发过来的信息  
        InputStream in=s.getInputStream(); 
         
        byte[] buf=new byte[1024]; 
         
        int len=in.read(buf); 
        System.out.println(new String(buf,0,len)); 
         
        s.close(); 
    } 
 

package src.com.hbsi.net;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class TcpClient {

 /**
  * @param args
  */
 public static void main(String[] args) throws Exception{
  //1.建立tcp客户端socket,要确定要连接的服务器ip,port
  Socket s=new Socket("192.168.49.59",9009);
  
  //2.通过建立的socket,获取输出流对象
  OutputStream out=s.getOutputStream();
  
  out.write("wo lai le".getBytes());
  
  //读取服务器端发过来的信息
  InputStream in=s.getInputStream();
  
  byte[] buf=new byte[1024];
  
  int len=in.read(buf);
  System.out.println(new String(buf,0,len));
  
  s.close();
 }

}

服务端

[java]
package src.com.hbsi.net; 
 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.ServerSocket; 
import java.net.Socket; 
 
public class TcpServer { 
 
    /**
     * @param args
     */ 
    public static void main(String[] args)throws Exception { 
        //1.建立服务器socket  
         
        ServerSocket ss=new ServerSocket(9009); 
        //2.调用accept()  
        Socket s=ss.accept(); 
         
        String ip=s.getInetAddress().getHostAddress(); 
        System.out.println(ip+"...connection"); 
         
        InputStream in=s.getInputStream(); 
        byte[] buf=new byte[1024]; 
        int len=in.read(buf); 
         
        System.out.println(new String(buf,0,len)); 
         
        //服务端向客户端返回信息  
        OutputStream out=s.getOutputStream(); 
        out.write("wo shou dao le".getBytes()); 
         
        s.close(); 
        ss.close(); 
         
         
 
    } 
 

package src.com.hbsi.net;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {

 /**
  * @param args
  */
 public static void main(String[] args)throws Exception {
  //1.建立服务器socket
  
  ServerSocket ss=new ServerSocket(9009);
  //2.调用accept()
  Socket s=ss.accept();
  
  String ip=s.getInetAd

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,