六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 45|回复: 0

socket单用户通信

[复制链接]

升级  40%

4

主题

4

主题

4

主题

童生

Rank: 1

积分
20
 楼主| 发表于 2013-1-15 02:35:15 | 显示全部楼层 |阅读模式
服务器端:

package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class socketServer {

private ServerSocket socketServer = null;
private Socket server = null;
private int port; //通信要用的端口
private InputStream is = null;
privateOutputStream os = null;
private BufferedReader br =null;
private PrintWriter pw = null;

/*
* 通信入口.定义端口
*/
public void Server(int port) throws IOException {
this.port = port;
Server();
}
/*
* 从键盘输入数据
*/
public String SystemIn() throws IOException {
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(System.in));
return br.readLine();
}
/*
* 服务器端通信
*/
private void Server() throws IOException {
// 创建服务器socket
this.socketServer = new ServerSocket(this.port);
// 监听端口.接收请求后返回socket
this.server = socketServer.accept();
//System.out.println("接受客户端请求,并建立连接");

is = server.getInputStream();
os = server.getOutputStream();
br = new BufferedReader(new InputStreamReader(is));
pw = new PrintWriter(new OutputStreamWriter(os));

while(true) {
String value = br.readLine();
print(value);
if(value.equals("88")) {
pw.println("88");
pw.flush();
break;
}
pw.println(SystemIn());
pw.flush();
}

}
/*
* 关闭流和服务器socket
*/
public void close() throws IOException {
if(is != null) {
if(br != null) {
br.close();
}
is.close();
}
if(os != null) {
if(pw != null) {
pw.close();
}
os.close();
}
if(server != null) {
if(socketServer != null) {
socketServer.close();
}
server.close();
}
}

private void print(String value) {
System.out.println(value);
}
public static void main(String [] args) throws IOException {
socketServer server = new socketServer();
server.Server(1000);
server.close();
}
}


客户端:
package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

public class socketClient {

private Socket client = null;
private int port; // 定义通信端口
private InputStream is = null;
privateOutputStream os = null;
private BufferedReader br =null;
private PrintWriter pw = null;

/*
* 通信入口.定义端口
*/
public void Client(int port) throws IOException {
this.port = port;
Client();
}
/*
* 从键盘输入数据
*/
public String SystemIn() throws IOException {
BufferedReader br = null;
br = new BufferedReader(new InputStreamReader(System.in));
return br.readLine();
}
/*
* 客户端通信
*/
private void Client() throws IOException {
// 创建socket对象,指定连接本机端口8888
this.client = new Socket("127.0.0.1", this.port);
System.out.println("已连接服务器");
is = client.getInputStream();
os = client.getOutputStream();
br = new BufferedReader(new InputStreamReader(is));
pw = new PrintWriter(new OutputStreamWriter(os));
while(true) {
pw.println(SystemIn());
pw.flush();

String value = br.readLine();
print(value);
if(value.equals("88")) {
pw.println("88");
pw.flush();
break;
}
}

}
/*
* 关闭流和客户端socket
*/
public void close() throws IOException {
if(is != null) {
if(br != null) {
br.close();
}
is.close();
}
if(os != null) {
if(pw != null) {
pw.close();
}
os.close();
}

if(client != null) {
client.close();
}
}

private void print(String value) {
System.out.println(value);
}
public static void main(String [] args) throws IOException {
socketClient client = new socketClient();
client.Client(1000);
client.close();

}
}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表