java socket 编程入门
2016-01-09 00:00
351 查看
摘要: 在eclipse里实现一个server类和client类,它们在本机上进行通信。
Server类需要做的是:
1.用ServerSocket指定端口,不妨指定为8888,只要保证这个端口好在本机中未被占用即可,代码如下:
2.接受并监听发送请求的的客户端Socket,代码如下:
3.用输入流接受客户端的数据:
4.处理完之后,用输出流给客户端的字母变为大写的在传回去:
5.关闭资源:
完整程序如下:
Client类所做的事:
1.创建socket,指定主机地址,和端口号:
2.用输出流给指定的主机在控制台输入索要发送字母:
3.用输入流接受主机发过来的数据:
4.关闭资源:
完整代码:
希望能给有需要的人到来帮助,有不当之处,还请大家多包涵,与指教。
Server类需要做的是:
1.用ServerSocket指定端口,不妨指定为8888,只要保证这个端口好在本机中未被占用即可,代码如下:
ServerSocket serverSocket = new ServerSocket(8888);
2.接受并监听发送请求的的客户端Socket,代码如下:
Socket socket = serverSocket.accept();
3.用输入流接受客户端的数据:
InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String clientSay = br.readLine(); System.out.println("Client Say:"+clientSay); socket.shutdownInput();
4.处理完之后,用输出流给客户端的字母变为大写的在传回去:
OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.print(clientSay.toUpperCase()); pw.flush();
5.关闭资源:
pw.print(clientSay.toUpperCase()); pw.flush(); pw.close(); os.close(); br.close(); isr.close(); is.close();
完整程序如下:
package com.net;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args)
{
try {
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
//接受客户端的信息
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String clientSay = br.readLine();
// while(clientSay!=null)
// {
System.out.println("Client Say:"+clientSay);
//clientSay= br.readLine();
//}
socket.shutdownInput();
//发送信息给客户端
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.print(clientSay.toUpperCase()); pw.flush(); pw.close(); os.close(); br.close(); isr.close(); is.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Client类所做的事:
1.创建socket,指定主机地址,和端口号:
Socket socket = new Socket("127.0.0.1", 8888);
2.用输出流给指定的主机在控制台输入索要发送字母:
OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String sendInfo = br.readLine(); pw.println(sendInfo);//注意换行,不然会出错,至于原因目前还不清楚,纠结。。。 pw.flush();
3.用输入流接受主机发过来的数据:
InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br1 = new BufferedReader(isr); String serverSay = br1.readLine(); System.out.println("Server Say:"+serverSay);
4.关闭资源:
br.close(); pw.close(); os.close(); socket.close();
完整代码:
package com.net;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args)
{
try {
Socket socket = new Socket("127.0.0.1", 8888);
//给服务器发送消息
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String sendInfo = br.readLine();
//while(sendInfo!=null)
//{
pw.println(sendInfo);
//}
pw.flush();
//接受服务端信息
InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br1 = new BufferedReader(isr); String serverSay = br1.readLine(); System.out.println("Server Say:"+serverSay);
br.close(); pw.close(); os.close(); socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
希望能给有需要的人到来帮助,有不当之处,还请大家多包涵,与指教。
相关文章推荐
- Java 命令行编译 获得参数
- java学习第二阶段day8
- JAVA中实现链式操作(方法链)的简单例子
- myeclipse导出可执行jar包读取外部配置文件
- 【javaMail】【2.发HTML邮件】java mail 发送HTML邮件
- 基于注解的spring MVC程序
- spring MVC 入门程序
- java基础----数组
- Java finalize方法使用
- spring MVC框架简介
- jcl-over-slf4j log桥接工具简介
- Eclipse debug的快捷键
- Spring 使用注解装配Bean
- Spring 4.2入门之HelloWorld
- JAVA 中数组的几种排序方法
- 使用SL4J桥接遗留的API(Bridging legacy APIs)
- 【javaMail】【1.基础发邮件】java mail 发送plain text 邮件 helloworld
- java日志,需要知道的几件事
- 理解类加载器:j2ee 环境下的 log4j
- 十种JAVA排序算法实例