`

java Socket和Server Socket多线程编程

阅读更多
下面的代码是java socket客户端和服务端的源码程序

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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package net.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server extends Thread
{
    ServerSocket server = null;
    Socket sk = null;
    BufferedReader rdr = null;
    PrintWriter wtr = null;
    public Server()
    {
        try
        {
            server = new ServerSocket(1987);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
    public void run()
    {
        while (true)
            {
                System.out.println("Listenning...");
                try
                {
//                  每个请求交给一个线程去处理
                    sk = server.accept();
                    ServerThread th = new ServerThread(sk);
                    th.start();
                    sleep(1000);
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                   
            }
    }
    public static void main(String [] args)
    {
        new Server().start();
    }
       
       
       
       
       
    class ServerThread extends Thread
    {
        Socket sk = null;
        public ServerThread(Socket sk)
        {
            this.sk = sk;
        }
        public void run()
        {
            try
            {
                wtr = new PrintWriter(sk.getOutputStream());
                rdr = new BufferedReader(new InputStreamReader(sk
                        .getInputStream()));
                String line = rdr.readLine();
                System.out.println("从客户端来的信息:" + line);
//              特别,下面这句得加上     “\n”,
                wtr.println("你好,服务器已经收到您的信息!'" + line + "'\n");
                wtr.flush();
                System.out.println("已经返回给客户端!");
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
               
        }
           
    }
}
客户端:
Java代码
1.package net.tcp;
2.
3.import java.io.BufferedReader;
4.import java.io.BufferedWriter;
5.import java.io.InputStreamReader;
6.import java.io.OutputStreamWriter;
7.import java.io.PrintWriter;
8.import java.net.Socket;
9.
10.public class Client extends Thread
11.{
12.
13.    Socket sk = null;
14.    BufferedReader reader = null;
15.    PrintWriter wtr = null;
16.    BufferedReader keyin = null;
17.
18.    public Client()
19.    {
20.        keyin = new BufferedReader(new InputStreamReader(System.in));
21.        try
22.        {
23.            sk = new Socket("127.0.0.1", 1987);
24.        }
25.        catch (Exception e)
26.        {
27.            e.printStackTrace();
28.        }
29.
30.    }
31.
32.    public void run()
33.    {
34.        try
35.        {
36.            reader = new BufferedReader(new InputStreamReader(sk
37.                    .getInputStream()));
38.            wtr = new PrintWriter(sk.getOutputStream());
39.            String get = keyin.readLine();
40.
41.            while (true)
42.            {
43.                if (get != null & get.length() > 0)
44.                {
45.                    wtr.println(get);
46.                    wtr.flush();
47.//                  wtr.close();
48.//                  System.out.println(get + "发送完毕");
49.                }
50.                if (reader != null)
51.                {
52.                    String line = reader.readLine();
53.                    System.out.println("从服务器来的信息:" + line);
54.                    
55.                }
56.                
57.            }
58.        }
59.        catch (Exception e)
60.        {
61.            e.printStackTrace();
62.        }
63.    }
64.http://wgyblog.com/html/166.html
65.    public static void main(String [] args)
66.    {
67.        new Client().start();
68.    }
69.}
分享到:
评论

相关推荐

    java基于socket/server的多线程聊天室程序,可以公聊和私聊。

    综上所述,本程序通过综合运用Java Socket编程、多线程技术和Swing图形界面库,成功实现了具有公聊和私聊功能的聊天室应用。这对于学习网络编程、多线程以及Java GUI开发都有着重要的参考价值。

    Java Socket学习---单线程阻塞

    在Java编程语言中,Socket是实现网络通信的基本组件。"Java Socket学习---单线程阻塞"这个主题主要探讨了如何使用Java的Socket类进行单线程的阻塞式通信,这种模式通常用于简单的客户端-服务器应用。在这个场景中,...

    java Socket 多线程

    总结来说,Java Socket多线程是构建高并发网络服务的关键技术。通过合理地设计和实现,可以有效地提升服务器的并发处理能力,为用户提供更高效的服务。在实际项目中,应根据具体需求选择适合的线程模型,例如线程池...

    java socket 多线程 简易实现

    Java Socket多线程简易实现是网络编程中的一个基础概念,主要应用于客户端与服务器之间的通信。在Java中,Socket是基于TCP协议的,提供了一种可靠的、面向连接的字节流通信方式。多线程则是Java并发编程的重要特性,...

    基于java socket网络编程实现的五子棋游戏,可多人在线玩耍,聊天

    Java的多线程特性也使得处理多个并发连接和游戏逻辑变得更加容易。 总的来说,这个项目展示了如何利用Java Socket网络编程实现一个多人在线的五子棋游戏,包括游戏逻辑、网络通信和聊天功能的整合。这样的实践有助...

    Java Socket学习---多线程阻塞

    3. 多线程编程,特别是在服务器端处理并发连接。 4. 网络通信中的数据编码与解码。 5. 错误处理和异常控制。 6. 可能涉及的线程安全问题及其解决方案。 通过对`EchoServer.java`、`SocketUtils.java`和`EchoClient....

    java socket 多线程实例

    在这个“Java Socket 多线程实例”中,我们将会探讨如何结合这两个关键概念来创建一个聊天服务器和客户端应用。 首先,`ChatServer.java` 文件通常包含了服务器端的代码。在Java中,通过`java.net.ServerSocket` 类...

    java socket多线程聊天

    总的来说,这个Java Socket多线程聊天软件利用了Java的网络编程能力、多线程特性和SWT GUI库,实现了服务器与多个客户端之间的实时、双向通信,为用户提供了一个实用的在线聊天平台。通过这样的实践,开发者可以深入...

    基于java server/socket 多线程技术的聊天室程序服务端。

    本文将深入分析一个基于Java Server/Socket多线程技术实现的聊天室程序服务端。该服务端能够支持多人群聊和单人私聊功能。通过详细解读其代码结构、工作原理以及关键实现细节,帮助读者更好地理解Java多线程在网络...

    Java Socket实战之二 多线程通信 .

    总结来说,Java Socket的多线程通信是一个关键的网络编程概念,它使得服务器能够同时处理多个客户端请求,提高了服务的响应速度和并发能力。结合特定的工具如XtreamXml,可以进一步优化数据的传输和处理效率。

    java socket编程

    在本文中,我们将深入探讨Java Socket编程的关键概念、工作原理以及如何创建服务端和客户端,并讨论如何通过多线程支持多个客户端同时在线。 首先,Socket是网络上的两个进程间通信的端点,它允许数据在网络中双向...

    Java socket网络编程的基础示例

    在实际应用中,Java Socket编程通常涉及异常处理、多线程以及数据的序列化与反序列化。例如,服务器端可能需要同时处理多个客户端连接,这时可以使用多线程来并发处理。客户端和服务器之间的数据交换可以采用JSON、...

    Java源码:Socket编程.rar_java socket _java编程_socket java_socket编程 jav

    实际应用中,我们还需要处理异常,确保资源的正确关闭,并可能需要使用多线程来同时处理多个客户端的连接。 在Java Socket编程中,我们还可以使用NIO(Non-blocking I/O)进行更高效的并发处理。NIO提供了选择器...

    java socket 编程文档

    五、多线程处理 如果服务器需要同时处理多个客户端连接,可以为每个新连接创建一个新的线程。这样,每个线程可以独立处理客户端请求,提高系统并发性。 六、高级特性 1. SSL/TLS安全套接字:Java提供JSSE(Java ...

    JAVA写的多线程socket通信程序源码

    在Java编程领域,多线程Socket通信是一种常见且重要的网络编程技术。...总的来说,这个项目为学习Java网络编程和多线程提供了一个实际的应用场景,通过分析和实践,我们可以提升对这些核心概念的理解和应用能力。

    java socket多线程多人聊天室

    本项目"java socket多线程多人聊天室"旨在利用Java的Socket API创建一个支持多个客户端同时连接的聊天环境。在这个项目中,主要涉及三个关键组件:Server(服务器)、Client(客户端)和User(用户)。 首先,`...

    java_Socket多线程服务器源代码介绍

    ### Java Socket多线程服务器源代码介绍 #### 一、Java Socket基础知识 在开始之前,我们先了解一下Java Socket的基本概念。Socket是一种用于网络通信的技术,它允许不同计算机上的应用程序通过网络进行通信。Java...

    三步学会Java_Socket编程

    在Java中,Socket编程是...通过理解Socket的概念,掌握ServerSocket和Socket的关键API,以及实践Server-Client模型,就能基本掌握Java Socket编程。在实际项目中,还需要考虑异常处理、安全性、性能优化等更多细节。

    C# socket多线程编程

    总的来说,C#的Socket多线程编程结合了网络通信与并发处理的能力,使得开发者可以构建高效、稳定的网络应用。通过理解和掌握相关的同步机制以及Socket工作原理,开发者能够设计出复杂且健壮的网络系统。

    java多线程Socket简单实现

    Java多线程Socket实现是网络编程中的重要概念,它结合了Java的并发处理能力和Socket通信技术,用于构建高效、可扩展的网络应用。Socket在计算机网络中起到桥梁的作用,允许两个远程应用程序通过TCP/IP进行数据交换。...

Global site tag (gtag.js) - Google Analytics