Socket通信简单实现客户端-服务器消息发送

本文介绍了TCP协议的基础概念,包括其作为面向连接的可靠传输协议的特点,并对比了UDP协议。此外,还提供了详细的Java代码示例来演示如何实现TCP通信的服务端与客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里我主要涉及到的是TCP通信,TCP是面向连接的可靠的传输协议。数据传输的单位是报文段。
用户数据报协议(UDP协议)提供无连接的尽最大努力的不可靠的数据传输服务。他们主要属于运
用层协议如FTP、SMTP等)-运输层(TCP或UDP)-网络层-数据链路层-物理层。
在TCP协议中,每一条TCP连接只能有两个端点,全双工通信并且是面向字节流的。
简单的Java实现代码如下:
服务端:
1.在服务端建立ServerSocket并绑定相应的和端口
2.使用accept()方法等待连接
3.利用输入流获取输入的内容
4.关闭连接
package ServerSocket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/*
 * 当一台计算机需要与另一台计算机通信时,需要知道另一台计算机的地址,那就是IP,或者说是域名
 * 一旦建立连接,客户端和服务器就可以通过套接字进行通信
 */
public class Server {

    public static void main(String[] args) {
        ServerSocket serverSocket;
        Socket socket=null;
        try {
             serverSocket = new ServerSocket(8000);
             System.out.println("服务器已经启动!");
             socket = serverSocket.accept();//等待客户端连接
             System.out.println("创建客户连接...");
             InputStream input = socket.getInputStream();//获取输入流
             InputStreamReader isr = new InputStreamReader(input);//字节流和字符流通信的桥梁,相当于将字节流转化为字符流
             BufferedReader reader = new BufferedReader(isr);
             while(true){
                 String str = reader.readLine();//整行读取内容
                 if(str.equals("exit")){
                     break;//退出
                 }

                 System.out.println("接收内容:"+str);
             }
             System.out.println("连接断开");
             reader.close();
             isr.close();
             input.close();
             socket.close();
             serverSocket.close();

        } catch (IOException e) {

            e.printStackTrace();
        }

    }

}

客户端:
1.使用套接字连接,当客户端创建连接Socket并且向服务端发送请求。
2.连接成功后发送输入内容

package ServerSocket;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

//实现客户端代码
public class Client {

    @SuppressWarnings("resource")
    public static void main(String[] args) {

        try {

            Socket socket = new Socket("127.0.0.1", 8000);
            OutputStream os = socket.getOutputStream();

            Scanner input = new Scanner(System.in);
            while (true) {
                System.out.print("请输入内容:");
                String str = input.nextLine();

                os.write((str+"\n").getBytes());//通过转
                os.flush();
            }
        } catch (UnknownHostException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值