socket demo程序
2024-08-21 00:18:12
package cn.example.socket; 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 MyClient {
public static void main(String[] args) throws UnknownHostException,
IOException {
// 定义socket
Socket socket = new Socket("localhost", 9999);
// 获取输入输出
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream(); // 处理 PrintWriter pw = new PrintWriter(outputStream);
pw.print("hello " + "socket\n");//换行符
pw.flush();
//pw.close();//不能关闭 Exception in thread "main" java.net.SocketException: socket closed String result = new BufferedReader(new InputStreamReader(inputStream))
.readLine(); System.out.println(result);
inputStream.close();
outputStream.close(); }
}
package cn.example.socket; 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.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket; public class MyServer {
public static void main(String[] args) throws IOException {
//建立server
ServerSocket serverSocket = new ServerSocket();
//绑定Ip
serverSocket.bind(new InetSocketAddress("localhost", 9999)); //启用一个线程处理
while(true){
System.out.println("server start");
new Thread(new MysocketThread(serverSocket.accept())).start(); } }
} class MysocketThread implements Runnable {
private Socket socket;
InputStream inputStream = null;
OutputStream outputStream = null;
public MysocketThread(Socket socket) {
super();
this.socket = socket;
} @Override
public void run() {
try {
//定义输入输出流
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream(); //解析读入数据
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String param = br.readLine(); //根据读入的数据处理业务逻辑,然后返回,这里简单返回
String backValue = "ok "+param+"\n"; PrintWriter pw = new PrintWriter(outputStream);
pw.print(backValue);
pw.flush();
pw.close(); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
outputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }
最新文章
- 虚拟机配置光盘为yum源
- windows 录音程序(一)
- selector 的用法,在选择和不选择情况下的颜色
- linux命令 wget
- 扩展ViewFlow避免和ViewPager滑动冲突,同时支持无限循环,并完美和CircleFlowIndicator结合
- TYVJ1460 旅行
- iOS 登陆的实现四种方式
- angularJS之$apply()方法
- CoreLocation 框架
- java 基础三
- Ubuntu 定时任务中的环境变量设置
- CCF-201503-2-数字排序
- ABP官方文档翻译 6.1.2 MVC视图
- 用织梦建站如何去掉a这个目录,还有内容页的a
- Unicode 与 Unicode Transformation Format(UTF-8 / UTF-16 / UTF-32)
- 大数据python词频统计之hdfs分发-cacheArchive
- python常用函数和方法 - 备忘
- 004-RestTemplate 使用常见问题
- 存根类(stub) 是什么意思?有什么作用?(转)
- quartz自定义线程数
热门文章
- Bootstrap-datetimepicker日期插件简单使用
- 十. 图形界面(GUI)设计6.文本框和文本区
- iOS 获取自定义cell上按钮所对应cell的indexPath.row的方法
- Android 架构 3.实现
- 对list_entry(ptr, type, member)的理解
- IDEA中添加类的创建者信息
- javascript:使用代理绑定事件
- css自动换行与不换行
- [React] Return a list of elements from a functional component in React
- C++ 字符串转化成浮点型