14网络编程

来源:互联网 发布:财经网数据 编辑:程序博客网 时间:2024/06/05 06:08


Socket编程

TCP/UDP-IP
客户端:
Socket
OutputStream
InputStream
服务器端:
ServerSocket
OutputStream
InputStream
//TCPserver
ServerThread serverThread = new ServerThread();
serverThread.start();

class ServerThread extends Thread{
    public void run(){
        ServerSocket serverSocket = null;
 try{
     serverSocket = new ServerSocket(3456);
            Socket socket = serverSocket.accept();
            InputStream inputStream = socket.getInputStream();
            byte[] buffer = new byte[1024*4];
            int temp = 0;
            while((temp = inputStream.read(buffer))!=-1){
                System.out.println(new String(buffer,0,temp));
      }
 }catch(IOException e){
     e.printStackTrace();
 }finally{
     try{
  serverSocket.close();
     }catch(IOException e){
       e.printStackTrace();
     }
 }
    }
}

//TCPclient
public static void main(String[] args){
    try{
        Socket socket = new Socket("192.168.1.10",3456);
        InputStream inputStream = new FileInputStream("f://file/words.txt");
 OutputStream outputStream = socket.getOutputStream();
 byte[] buffer = new byte[4*1024];
 int temp = 0;
 while((temp = inputStream.read(buffer))!=-1){
     outputStream.write(buffer,0,temp);
        }
 outputStream.flush();
    }catch(IOException e){
        e.printStackTrace();
    }
}

//UDPserver
public void run(){
    try{
 DatagramSocket socket = new DatagramSocket(7891);
        byte data[] = new byte[1024];
 DatagramPacket packet = new DatagramPacket(data,data.length);
 socket.receive(packet);
 String result = new String(packet.getData(), packet.getOffset(), packet.getLength());
 TextViewx.setText(result);
 System.out.println(result);
    }catch(Exception e){
 e.printStackTracet();
    }
}
//UDPclient
public static void main(String[] args){
    try{
        DatagramSocket socket = new DatagramSocket(7891);
        InetAddress serverAddress = InetAddress.getByName("192.168.1.104");
 String str = EditTextx.getText().toString();
        byte data[] = str.getBytes[];
        DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,7891);
 socket.send(packet);
    }catch(IOException e){
 e.printStackTracert();
    }
}

TextViewx.setText(getLocalHostIp());

public static String getLocalHostIp(){
        String ipaddress = "";
        try{
            Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
            while (en.hasMoreElements()){
                NetworkInterface nif = en.nextElement();
                Enumeration<InetAddress> inet = nif.getInetAddresses();
                while (inet.hasMoreElements()){
                    InetAddress ip = inet.nextElement();
                    if (!ip.isLoopbackAddress()&&InetAddressUtils.isIPv4Address(ip.getHostAddress())){
                        return ipaddress = "本机的ip是" + ":" + ip.getHostAddress();
                    }
                }
            }
        }catch (SocketException e){
            Log.e("feige", "获取本地ip地址失败");
            e.printStackTrace();
        }
        return ipaddress;
    }

0 0