入门级的Java Socket代码

在男友手把手的指导下,写出第一个类似于“hello
world”的socket程序。

男友要求:

1. 程序以命令行方式运行,在两台联网的电脑上分别运行;

2. 一台电脑的命令行中输入“程序名称
wait”,运行程序,进入监听状态;

3. 一台电脑的命令行中输入“程序名称
ip地址”,运行程序,连接另一台电脑;

4. 两台电脑均可发送接收消息。

分析流程图:

附代码:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

package
mytalk;

import java.net.*;

import java.io.*;

import java.util.Scanner;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class MyTalk {

    public
static final int PORT = 12345;//监听的端口号   

    public
static void main(String[] args) throws
IOException{

        // 控制台输入服务器需要监听的端口号

        Scanner inputData = new
Scanner(System.in);

        ServerSocket serverSocket = null;

        Socket socket = null;

        

        if
(args.length != 1) {

            throw
new IllegalArgumentException("Parameter(s): wait or IP address.");

        }

        String str = args[0];

        

        if
(str.equals("wait")){

            serverSocket = new
ServerSocket(PORT);

            // 服务器从端口监听连接,监听语句

            socket = serverSocket.accept();

        } else
if (isIP(str)){

            socket = new
Socket(str, PORT);

        } else
{

            throw
new IllegalArgumentException("Parameter is wrong.");

        }

        // 创建新线程,用于等待接收客户端发来的消息

        (new
MyTalk()).new
ThreadHandleSendAClient(socket);

        // 定义输出流,发送消息

        DataOutputStream outputToClient = new
DataOutputStream(

                socket.getOutputStream());

        while
(true) {

                // 控制台输入反馈给客户端的信息

                String sedServer = inputData.nextLine();

                // 将输入的消息发送给客户端

                outputToClient.writeUTF(sedServer);

        }

    }

    public
class ThreadHandleSendAClient implements
Runnable {

        private
Socket socket;

        ThreadHandleSendAClient(Socket socket) {

            this.socket = socket;

            new
Thread(this).start();

        }

        public
void run() {

            try
{

                // 接收客户端发送来的消息并在控制台显示

                DataInputStream inputFromClient = new
DataInputStream(

                        socket.getInputStream());

                while
(true) {

                    String revClient = inputFromClient.readUTF();

                    System.out.println(revClient);

                }

            } catch
(IOException ex) {

                System.out.println(ex);

            }

        }

    }

    

    private
static boolean isIP(String str) {

        String num = "(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)";

        String regex = "^"
+ num + "\\."
+ num + "\\."
+ num + "\\."
+ num + "$";

        return
match(regex, str);

    }

    

    private
static boolean match(String regex, String str) {

        Pattern pattern = Pattern.compile(regex);

        Matcher matcher = pattern.matcher(str);

        return
matcher.matches();

        }

}

打包为可执行jar,步骤如下:

  1. 1)在要打包的项目上右击,选择Export  2)在弹出的窗口中,选择Java
    -> Runnable JAR File,然后点击next按钮   3)在Runnable JAR File
    Specification窗口中,选择Launch configuration和Export
    destination  4)点击Finish按钮,打包完成。

执行jar:cmd -> java -jar jar文件路径 参数

  在同一台机子上的运行过程:先输入cmd
->java -jar jar文件路径 wait ,启动服务器监听端口号;再输入cmd ->java -jar jar文件路径
IP地址,连接;交互式输入输出数据,接收和发送消息。

深深的感谢男友不揍之恩,估计再写不出来我就该挨揍了。。。

入门级的Java Socket代码,布布扣,bubuko.com

时间: 2024-07-30 13:49:28

入门级的Java Socket代码的相关文章

如何为可扩展系统进行Java Socket编程

从简单I/O到异步非阻塞channel的Java Socket模型演变之旅 上世纪九十年代后期,我在一家在线视频游戏工资工作,在哪里我主要的工作就是编写Unix Unix Berkley Socket和Windows WinSock代码.我的任务是确保视频游戏客户端和一个游戏服务器通信.很幸运有这样的机会写一些Java Socket代码,我对Java流式网络编程和简洁明了的API着迷.这一点都不让人惊讶,Java最初就是设计促进智能设备之间的通信,这一点很好的转移到了桌面应用和服务器应用. 19

java socket编程实例代码讲解

1.所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 操作java socket时用到的最多的三个方法为: accept():主要用于服务器端产生"阻塞",等待客户端的链接请求,并且返回一个客户端的Socket实例: getInputStream():方法主要用来获得网络连接输入,同时返回一个InputStream对象实例: getOutputStream

Java Socket编程

对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket.服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了.首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信.这样就有两个Socket了,客户端和服务端各一个. 客户端写服务端读 服务端代码 public class Server { public s

交通银行 Java Socket 服务启动 管理 WINDOWS 版

按照交通银行提供的无界面启动方法试验了很多次,都没有成功,所以自己动手用C# 知识写了一个. 小工具可以判断 交通银行 JAVA SOCKET 服务是否启动,并可以启动/关闭服务 主要代码如下: 判断服务是否启动 引用 :using System.Management; SelectQuery selectQuery = new SelectQuery(“select * from Win32_Process where Name = ‘java.exe’”); object cmdLine =

Java Socket之单线程通信

1. 服务器端处理流程 接触一种技术,首先都要熟悉它的生命周期,这样才能从大局上看每个流程的细节.才有居高临下,势如劈竹的架势.加深我们对这种技术的理解.现在来看看socket服务器的生命周期. socket程序,一般情况下,都是服务器与客户端成双成对出现. 服务器端socket的生命周期为:监听服务器端口,接受客户端连接,获取客户端输入.输出流,处理业务逻辑.发送响应信息,关闭客户端连接,关闭服务区监听.详情如下所示: <<<-------------  <_< 向左看 2

java 网络编程 TCP协议 java 服务器和客户端 java socket编程

一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程:        先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客户端发出连接请求,服务端监听到这次请求后向客户端发回接受消息,连接建立,启动一个线程去处理这次请求,然后继续死循环监听其他请求.客户端输入字符串后按回车键,向服务器发送数据.服务器读取数据后回复客户端数据.这次请求处理完毕,启动的线程消亡.如果客户端接收到 "OK" 之外的返回数据,会再次

Java Socket网络编程Server端详解

Socket通信:分为客户端和服务端的socket代码. Java SDK提供一些相对简单的Api来完成.对于Java而言.这些Api存在与java.net 这个包里面.因此只要导入这个包就可以开始网络编程了. 网络编程的基本模型就是客户机到服务器模型.简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置.并去建立两者之间的联系,然后完成数据的通讯就可以了.这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端.了解这个简单的模型,就可以

【转】Java Socket编程

原文地址:Java Socket编程 Java Socket编程 对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket.服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了.首先ServerSocket将在服务端监听某个端口,当发现客户端有Socket来试图连接它时,它会accept该Socket的连接请求,同时在服务端建立一个对应的Socket与之进行通信.这样就有两个Socket了,客户端和服务端各一个. 对于Socket之间的通

java socket控制台版本聊天室程序源码下载

原文:java socket控制台版本聊天室程序源码下载 代码下载地址:http://www.zuidaima.com/share/1550463257578496.htm java socket控制台版本聊天室程序源码下载,学习的时候写的,适合学习java基础 java网络编程基础用 标签: java socket 控制台 聊天室 源码话题: 网络编程 java socket控制台版本聊天室程序源码下载,布布扣,bubuko.com