博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个简单Java多线程的应用
阅读量:7281 次
发布时间:2019-06-30

本文共 2554 字,大约阅读时间需要 8 分钟。

import java.net.*;

import java.io.*;
public class simpleServer
{
private static ServerSocket serverSocket;
private static listenClient listen;
public static void main(String[] args) throws Exception
{
int port;
if(args.length==0)
{
System.out.println('Usage:java simpleServer [port]');
System.exit(1);
}
port=Integer.parseInt(args[0]);
startServer(port);
}
public static void startServer(int port)throws Exception
{
try
{
serverSocket=new ServerSocket(port);
Thread thread=new Thread(new listenClient(serverSocket));
thread.start();
}
catch (IOException ex)
{
ex.printStackTrace();
}
}
}
class listenClient implements Runnable
{
private ServerSocket serverSocket;
private Socket clientSocket;
DataInputStream in;
DataOutputStream out;
public listenClient(ServerSocket ser verSocket)throws Exception
{
this.serverSocket=serverSocket;
}
public void run()
{
try
{
while(true)
{
clientSocket=serverSocket.accept();
System.out.println('Connection from '+clientSocket.getInetAddress().getHostAddress());
in=new DataInputStream(clientSocket.getInputStream());
out=new DataOutputStream(clientSocket.getOutputStream());
String lineSep=System.getProperty('line.separator');//行分隔符,即回车换行
InetAddress addr=serverSocket.getInetAddress().getLocalHost();
String outData='Server Information: '+lineSep+' Local Host: '+serverSocket.getInetAddress().getLocalHost()+lineSep+' port :'+serverSocket.getLocalPort();
byte[] outByte=outData.getBytes();
out.write(outByte,0,outByte.length);
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
};
import java.net.*;
import java.io.*;
public class simpleClient
{
private staticSocket socket;
public static void main(String[] args)throws Exception
{
String host;
int port;
if(args.length <2)
{
System.out.println('Usage:java simpleClient [remote IP/Host] [port]');
System.exit(1);
}
host=args[0];
port=Integer.parseInt(args[1]);
connectServer(host,port);
}
public static void connectServer(String host,int port)
{
try
{
socket=new Socket(InetAddress.getByName(host),port);
DataInputStream in=new DataInputStream(socket.getInputStream());
DataOutputStream out=new DataOutputStream(socket.getOutputStream());
byte[] inByte=new byte[1024];
in.read(inByte);
String response=new String(inByte,0,inByte.length);
System.out.println('Message from server: ');
System.out.println(response.trim());
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch(IOException ex)
{
ex.printStackTrace();
}
finally
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}

转载于:https://www.cnblogs.com/jaffee-L/p/9717291.html

你可能感兴趣的文章
Atitit.导出excel报表的设计与实现java .net php 总结
查看>>
C3P0在多线程下的maxPoolSize配置
查看>>
二叉树(10)----比較两个二叉树是否同样(结构和数据),递归和非递归
查看>>
ViewController 视图控制器
查看>>
Android自定义控件
查看>>
第十三章 ThreadPoolExecutor源码解析
查看>>
I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor
查看>>
docker 学习手冊-中文版下载
查看>>
apache tomcat 集群! (转)
查看>>
【ZOJ 1221】Risk
查看>>
【笔记】一些linux实用函数技巧【原创】
查看>>
数据结构图文解析之:二分查找及与其相关的几个问题解析
查看>>
arcgis for javascript之ArcGISDynamicMapServiceLayer图层控制的实现
查看>>
php框架的制作原理
查看>>
【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之四】使用绑定C++至Lua的自己定义类...
查看>>
python中使用mahotas包实现高斯模糊
查看>>
【SVN Working copy is too old (format 10, created by Subversion 1.6)】解决方式
查看>>
ros与下位机通信常用的c++ boost串口应用--22
查看>>
Codeforces Beta Round #6 (Div. 2 Only) D. Lizards and Basements 2 dfs
查看>>
adbWireless 简单教程
查看>>