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();
}
}
} }

最新文章

  1. 虚拟机配置光盘为yum源
  2. windows 录音程序(一)
  3. selector 的用法,在选择和不选择情况下的颜色
  4. linux命令 wget
  5. 扩展ViewFlow避免和ViewPager滑动冲突,同时支持无限循环,并完美和CircleFlowIndicator结合
  6. TYVJ1460 旅行
  7. iOS 登陆的实现四种方式
  8. angularJS之$apply()方法
  9. CoreLocation 框架
  10. java 基础三
  11. Ubuntu 定时任务中的环境变量设置
  12. CCF-201503-2-数字排序
  13. ABP官方文档翻译 6.1.2 MVC视图
  14. 用织梦建站如何去掉a这个目录,还有内容页的a
  15. Unicode 与 Unicode Transformation Format(UTF-8 / UTF-16 / UTF-32)
  16. 大数据python词频统计之hdfs分发-cacheArchive
  17. python常用函数和方法 - 备忘
  18. 004-RestTemplate 使用常见问题
  19. 存根类(stub) 是什么意思?有什么作用?(转)
  20. quartz自定义线程数

热门文章

  1. Bootstrap-datetimepicker日期插件简单使用
  2. 十. 图形界面(GUI)设计6.文本框和文本区
  3. iOS 获取自定义cell上按钮所对应cell的indexPath.row的方法
  4. Android 架构 3.实现
  5. 对list_entry(ptr, type, member)的理解
  6. IDEA中添加类的创建者信息
  7. javascript:使用代理绑定事件
  8. css自动换行与不换行
  9. [React] Return a list of elements from a functional component in React
  10. C++ 字符串转化成浮点型