Socket通信
来源:互联网 发布:手机淘宝个人主页标签 编辑:程序博客网 时间:2024/05/22 12:47
说起Socket 这个东西,不同的人,有不同的说法,有不同的叫法,不管你叫它什么,它也就是一个工具,用来完成我们实际的业务的,所以可以不必要纠结这个。
在JDK 上有一堆的关于这个的介绍,╮(╯▽╰)╭ ,真心话,遇到要使用的时候,我还真不想去查它怎么使用,我只关心结果。
来,直接上代码了(我觉得这个比较的只管)。
server 端的,里面有些bug ,也不想改动了,只是想表达个思想就是了。
package com.ibm.extend.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
private int port;
public SocketServer(int port){
this.port = port;
}
public static void main(String[] args) {
try {
System.out.println("The server is start ...");
ServerSocket server = new ServerSocket(8899);
Socket socket = server.accept();
InputStream in = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in,"UTF-8"));
String msg = reader.readLine();
while (true) {
System.out.println("The receive message is : " + msg);
if (msg.equals("stop")) {
break;
}
}
//close.
reader.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* receive messages.
* @return
*/
public boolean receiveMsg(){
try {
ServerSocket server = new ServerSocket(port);
Socket socket = server.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintStream ps = new PrintStream(socket.getOutputStream());
String msg = br.readLine();
while (true) {
System.out.println("client input value : "+msg);
ps.println(msg);
if (msg.equals("stop")) {
break;
}
msg = br.readLine();
}
//colse.
br.close();
ps.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}
Client端的代码,也有bug ,不可直接拿来就run 。
package com.ibm.extend.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class SocketClient {
private static String host;
private static int port;
private static int index;
public SocketClient(String host, int port) {
this.host = host;
this.port = port;
}
/**
* print message
* @param writer
* @param msg
*/
public static void delayPrint(final BufferedWriter writer ,final String msg) {
Timer timer = new Timer(false);
TimerTask task = new TimerTask() {
public void run() {
try {
writer.write(msg);
index++;
System.out.println("");
} catch (IOException e) {
e.printStackTrace();
}
}
};
Date time = new Date();
long delay = 2000;
long period = 5000;
// 启动定时任务,立即执行壹次并退出
// timer.schedule(task, time);
// 启动定时任务,立即执行壹次,然后每隔两秒执行壹次
timer.schedule(task, time, delay);
// 启动定时任务,从现在起过两秒执行壹次然后退出
// timer.schedule(task, delay);
// 启动定时任务,从现在起过两秒以后,每隔五秒执行壹次
// timer.schedule(task, delay, period);
}
public static void main(String[] args) {
try {
System.out.println("The client is start ...");
Socket socket = new Socket("127.0.0.1", 8899);
String msg = "This is test message just for test . if it working ."+index;
OutputStream out = socket.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
while (true) {
//writer.write(msg);
delayPrint(writer, msg);
System.out.println("The send message is : " + msg);
if (msg.equals("stop")) {
break;
}
}
// close.
writer.close();
out.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* send messages.
*
* @return
*/
public boolean sendMsg() {
try {
Socket socket = new Socket(host, port);
PrintStream ps = new PrintStream(socket.getOutputStream());
BufferedReader brin = new BufferedReader(new InputStreamReader(System.in));
BufferedReader brout = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = brin.readLine();
while (true) {
ps.println(msg);
msg = brout.readLine();
System.out.println("服务器的信息:" + msg);
if (msg.equals("stop")) {
break;
}
msg = brin.readLine();
}
// close.
socket.close();
brin.close();
brout.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
}
这个东西,主要是用来在网络间传递数据使用的,但是如果在传递过程中,断网了,那就歇菜了。O(∩_∩)O~ 使用的时候一定要主要这个问题的处理。
主要在于使用,在意使用的细节和注意事项。
- Socket通信
- Socket通信
- socket通信
- Socket通信
- Socket通信
- socket通信
- socket通信
- socket通信
- socket 通信
- socket通信
- SOCKET通信
- Socket通信
- 通信 socket
- socket 通信
- socket通信
- socket通信
- socket通信
- socket通信
- 酷站欣赏:分享13个五彩缤纷的国外网站作品
- java.lang.IllegalArgumentException: node to traverse cannot be null! 处理方法
- C# 异常"关于对象不能从DBNull转换为其他类型"
- linux下如何安装.bunld文件
- MiniGUI移植到s3c2410
- Socket通信
- 计算机类核心期刊排名(国内)
- 安装ant和环境变量配置
- dao---service---action分层结构
- Gabor filter
- Java 多线程编程之二 volatile 关键字的使用
- java 强引用,软引用,弱引用,虚引用
- 有一群海盗(不多于20人),在船上比拼酒量
- eclipse从数据库逆向生成Hibernate实体类