Socket的简单TCP通信使用-java

soket的概述-摘自百度:

所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。

首先是获取本地ip,我这里直接用代码获取本地ip了。

package Servertest;


import java.net.InetAddress;
import java.net.UnknownHostException;

public class GetIp {
    public static void main(String[] args) {
        InetAddress ip;
        {
            try {
                ip = InetAddress.getLocalHost();
                System.out.println(ip.getHostAddress());
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }
        }
    }
}

接着是服务端的代码

package Servertest;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
//服务器先接受客户端再反馈 所以先input再out写反馈
public class Server {
    public static void main(String[] args) throws IOException {

        ServerSocket ss = new ServerSocket(1000);
        while(true)
        {
            Socket s = ss.accept();//如果客户端有os的时候s就会以ss来创建出对象
            InputStream is = s.getInputStream();
            byte[] bys = new byte[1024];
            int len = is.read(bys);
            String data = new String(bys, 0, len);//data为bys的内容
            System.out.println("服务器的输出内容:" + data);
            //给出反馈
            OutputStream os = s.getOutputStream();
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入服务器反馈出来的内容");
            String strserver = sc.nextLine();
            os.write(("这是服务器给出的反馈:" + strserver).getBytes());
        }
    }
}

以及客户端的代码

package Servertest;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;
//客户端先写入 后接受 所以先output 再input
public class Client {
    public static void main(String[] args) throws IOException {

        while(true)
        {
            Socket s = new Socket("127.00.00.1", 1000);
            OutputStream os = s.getOutputStream();
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入客户端要发送的消息:");
            String strClient = sc.nextLine();
            os.write(("这是客户端给出的消息:" + strClient).getBytes());
            /*以上建立服务器的沟通和发送消息*/
            InputStream is = s.getInputStream();
            byte[] bys = new byte[1024];
            int len = is.read(bys);
            String data = new String(bys, 0, len);
            System.out.println("客户端的输出:" + data);//接受消息
            s.close();
        }
    }
}

127.00.00.1的话是默认的本地ip,可以不用获取ip就进行试用。

必须先启动服务端用于接收客户端数据,不然客户端就会报错。

技术暂时有限,还不懂怎么跨网进行通信。

为了能循环使用,就加了while,只要服务器不停止,就能一直循环调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值