这是在一本java教材上看到的,做了点修改。具体本教材记不清楚了,Sorry.放在这里,只是让自己需要的时候能够容易找到。
程序分两部分,服务端和客户端。先把服务端运行起来,在运行客户端。整个过程就是客户端想服务端发送String,服务端再返回。客户端的String由键盘输入得到。
服务器端。
Java代码
1.package net.tcp;
2.
3.import java.io.BufferedReader;
4.import java.io.IOException;
5.import java.io.InputStreamReader;
6.import java.io.PrintWriter;
7.import java.net.ServerSocket;
8.import java.net.Socket;
9.
10.public class Server extends Thread
11.{
12.
13. ServerSocket server = null;
14. Socket sk = null;
15. BufferedReader rdr = null;
16. PrintWriter wtr = null;
17.
18. public Server()
19. {
20. try
21. {
22. server = new ServerSocket(1987);
23. }
24. catch (IOException e)
25. {
26. e.printStackTrace();
27. }
28. }
29.
30. public void run()
31. {
32.
33. while (true)
34. {
35. System.out.println("Listenning...");
36. try
37. {
38.// 每个请求交给一个线程去处理
39. sk = server.accept();
40. ServerThread th = new ServerThread(sk);
41. th.start();
42. sleep(1000);
43. }
44. catch (Exception e)
45. {
46. e.printStackTrace();
47. }
48.
49. }
50. }
51.
52. public static void main(String [] args)
53. {
54. new Server().start();
55. }
56.
57.
58.
59.
60.
61.
62. class ServerThread extends Thread
63. {
.
65. Socket sk = null;
66. public ServerThread(Socket sk)
67. {
68. this.sk = sk;
69. }
70. public void run()
71. {
72. try
73. {
74. wtr = new PrintWriter(sk.getOutputStream());
75. rdr = new BufferedReader(new InputStreamReader(sk
76. .getInputStream()));
77. String line = rdr.readLine();
78. System.out.println("从客户端来的信息:" + line);
79.// 特别,下面这句得加上 “\
”,
80. wtr.println("你好,服务器已经收到您的信息!'" + line + "'\
");
81. wtr.flush();
82. System.out.println("已经返回给客户端!");
83.
}
84. catch (IOException e)
85. {
86. e.printStackTrace();
87. }
88.
. }
90.
91. }
92.
93.}
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);
//特别,下面这句得加上 “\
”,
wtr.println("你好,服务器已经收到您的信息!'" + line + "'\
");
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
r = 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. }
.
65. public static void main(String [] args)
66. {
67. new Client().start();
68. }
69.}