服务端
package server;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Servertools {
private ServerSocket sersoc;
public Socket clisoc[]=new Socket[20];
private DataOutputStream out;
private InputStream inFromClient;
private DataInputStream in;
/**
* 服务端类构造方法
* @param port
*/
Servertools(int port){
try {
sersoc=new ServerSocket(port);
clisoc[0]=sersoc.accept();
inFromClient = clisoc[0].getInputStream();
in = new DataInputStream(inFromClient);
} catch (IOException e) {
e.printStackTrace();
}
this.read();//开启读取线程
}
/**
* socket服务端类发送消息方法
* @param mes
* @param clientsoc
*/
public void send(String mes,Socket clientsoc) {
try {
out = new DataOutputStream(clientsoc.getOutputStream());
out.writeUTF(mes);
}catch(IOException e) {
System.out.println("socket~server发送失败:"+e);
}
}
/**
* socket服务端类读取消息方法
*/
public void read() {
Readthread rt=new Readthread();
rt.start();
}
/**
* socket服务端读取线程类
* @author Administrator
*
*/
public class Readthread extends Thread{
public void run() {
while(true)
{
try {
String tempstr=in.readUTF();
//System.out.println("socket~client收到消息:"+tempstr);
Server.readit(tempstr);//调用主类读取中断方法
}catch(IOException e) {
try {
Thread.sleep(1000);
} catch (InterruptedException ee) {
ee.printStackTrace();
}
}
}
}
}
/**
* socket服务端类关闭方法
*/
public void close() {
try {
out.close();
clisoc[0].close();
}catch(IOException e) {
System.out.println("socket~server关闭失败:"+e);
}
}
}
在使用类中实现 "Server.readit(tempstr);//调用主类读取中断方法" 静态方法即可获得传输过来的数据Server为类名
客户端
package client;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Clienttools {
private Socket clisoc;
private OutputStream outtoserver;
private DataOutputStream out;
private InputStream inFromServer;
private DataInputStream in;
/**
* socket客户端类构造方法
* @param ip
* @param port
*/
Clienttools(String ip,int port){
try {
//输出流区
clisoc=new Socket(ip,port);
outtoserver=clisoc.getOutputStream();
out=new DataOutputStream(outtoserver);
//输入流区
inFromServer = clisoc.getInputStream();
in = new DataInputStream(inFromServer);
}catch(IOException e) {
System.out.println("socket~client创建失败:"+e);
}
this.read();
}
/**
* socket客户端类发送消息方法
* @param mes
*/
public void send(String mes) {
try {
out.writeUTF(mes);
}catch(IOException e) {
System.out.println("socket~client发送失败:"+e);
}
}
/**
* socket客户端类读取消息方法
*/
public void read() {
Readthread rt=new Readthread();
rt.start();
}
/**
* socket客户端读取线程类
* @author Administrator
*
*/
public class Readthread extends Thread{
public void run() {
while(true)
{
try {
String tempstr=in.readUTF();
//System.out.println("socket~client收到消息:"+tempstr);
Client.readit(tempstr);//调用主类读取中断方法
}catch(IOException e) {
try {
Thread.sleep(1000);
} catch (InterruptedException ee) {
ee.printStackTrace();
}
}
}
}
}
/**
* socket客户端类关闭方法
*/
public void close() {
try {
out.close();
outtoserver.close();
clisoc.close();
}catch(IOException e) {
System.out.println("socket~client关闭失败:"+e);
}
}
}
同样在实用类中实现静态方法"Client.readit(tempstr);//调用主类读取中断方法" (Client为类名) 获得服务端传来的数据
需要不同类型的数据传输时,修改输出流的write方法即可.
声明:转载请注明出处,本人入门级菜鸟,内容大多学习于网络,存在问题太多不一一列举,大佬多多指教.本人QQ941131649