JAVA socket编程

本文介绍了Java中Socket编程的基本概念,并通过TCP客户端和服务端的示例代码展示了如何使用Java进行Socket通信。此外,还简单介绍了Java中UDP模型的实现方式。

    JAVA采用Socket对象封装了传统socket编程接口,提供了accept(), getInputStream()和getOutputStream()等方法,以简化传统socket编程模型。

    对于TCP模型,JAVA封装了ServerSocket和Socket类分别用于创建Server端和Client端对象。服务端创建一个ServerSocket对象(在创建的过程中,自动执行了listen()方法),然后调用accept()方法,阻塞等待客户端连接。当有客户端连接过来,accept()方法返回一个同客户端通讯的Socket对象,服务端利用这个Socket对象获取InputStream和OutputStream来同客户端数据通讯。客户端创建一个Socket对象(在创建过程中,自动执行了connect()方法),然后通过这个Socket对象获取InputStream和OutStream来同服务端进行数据通讯。

    示例代码如下:

    ClientTest.java:

package com.myTCP;

import java.net.Socket;
import java.net.InetAddress;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;

import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

public class ClientTest {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket(InetAddress.getLocalHost(), 5890);
            
            // send to server
            OutputStream outputStream = socket.getOutputStream();
            OutputStreamWriter streamWriter = new OutputStreamWriter(outputStream);
            BufferedWriter bufferedWriter = new BufferedWriter(streamWriter);
            
            bufferedWriter.write("message from Client!");
            
            // receive from server
            InputStream inputStream = socket.getInputStream();
            InputStreamReader streamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(streamReader);
            
            System.out.println("I'm Client, Server said: " + bufferedReader.readLine());
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

    ServerTest.java:

package com.myTCP;

import java.net.Socket;
import java.net.ServerSocket;
import java.net.InetAddress;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;

import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

public class ServerTest {
    public static void main(String[] args) {
        try {
            ServerSocket server = new ServerSocket(5890, 0, InetAddress.getLocalHost());
            Socket socket = server.accept();
            
            // receive from client
            InputStream inputStream = socket.getInputStream();
            InputStreamReader streamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(streamReader);
            
            System.out.println("I'm Server, Client said: " + bufferedReader.readLine());
            
            // send to client
            OutputStream outputStream = socket.getOutputStream();
            OutputStreamWriter streamWriter = new OutputStreamWriter(outputStream);
            BufferedWriter bufferedWriter = new BufferedWriter(streamWriter);
            
            bufferedWriter.write("message from Server!");
            server.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

    对于UDP模型,JAVA封装了DatagramSocket类和DatagramPacket类用于数据发送和接收。DatagramSocket类提供了send()和receive()接口,分别用于发送和接收DatagramPacket对象。这个比较简单,不再贴示例代码。

 

转载于:https://my.oschina.net/yepanl/blog/1584190

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值