您的位置:首页 > 编程语言 > Java开发

java socket 示例代码

2010-04-12 14:15 507 查看
示例1:

//-------- test\Land\Client.java --------
package test.Land;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Client {

public static void main(String[] args) throws Exception {
test();
}

public static void test() throws Exception {
Socket socket = new Socket("localhost", 9999);

// 发送请求
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement("Class");
Element type = root.addElement("Types");
Element classes = root.addElement("Classes");
Element function = classes.addElement("FunctionLanding");
type.addAttribute("type", "String").addText("LandConn");
classes.addAttribute("name", "SQLParse");
function.addAttribute("name", "LandDemo");
function.addElement("IPparam").addAttribute("type", "String").addText("ClientIP");
function.addElement("LNparam").addAttribute("type", "String").addText("ClientName");
function.addElement("ANparam").addAttribute("type", "String").addText("ClientAccountNumber");
function.addElement("PWparam").addAttribute("type", "String").addText("ClientPassWord");
function.addElement("Fparam").addAttribute("type", "String").addText("Lflag");
// 是否有缩进
String indent = " ";
// 是否产生新行(即一行一个元素)
boolean newline = true;
XMLWriter writer = new XMLWriter(socket.getOutputStream(), new OutputFormat(indent, newline, "gb2312"));
writer.write(doc);
writer.flush();
System.out.println("发送完毕");

// 接收响应
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
// 接收数据,直至 socket 被对方 close(或者 shutdownOutput)
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println("接收到的内容: " + sb.toString());

socket.close();
}
}

//-------- test\Land\Server.java --------
package test.Land;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Server {

public static void main(String[] args) throws Exception {
test();
}

public static void test() throws IOException {
ServerSocket ss = new ServerSocket(9999);
Socket socket = ss.accept();

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
StringBuffer sb = new StringBuffer();
String line = null;
// 接收数据,直至收到一行 "</Class>"
while (!"</Class>".equals(line = br.readLine())) {
sb.append(line);
}
sb.append("</Class>");
System.out.println("接收到的内容: " + sb.toString());

// 返回信息
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement("Class");
Element incept = root.addElement("incept");
incept.addAttribute("type", "boolean").addText(String.valueOf(true));
String lint = " ";
boolean newline = true;
XMLWriter writer = new XMLWriter(socket.getOutputStream(), new OutputFormat(lint, newline, "gb2312"));
writer.write(doc);
writer.flush();
System.out.println("发送完毕");

socket.close();
ss.close();
}

}

示例2:

String ip = "172.31.1.130";
ip = "127.0.0.1";
int port = 10004;
try {
Socket socket = new Socket(ip, port);
socket.setSoTimeout(5539900);
java.io.OutputStream out = socket.getOutputStream();

byte[] date = "hello world".getBytes();
out.write(data);
out.flush();

socket.shutdownOutput();

byte[] buffer = new byte[1024];
int len = -1;
java.io.FileOutputStream fout = new java.io.FileOutputStream(
"d:/response.xml");
java.io.ByteArrayOutputStream bout = new java.io.ByteArrayOutputStream();

java.io.InputStream in = socket.getInputStream();

while ((len = in.read(buffer, 0, buffer.length)) > 0) {
bout.write(buffer, 0, len);
}
in.close();
bout.flush();
bout.close();

byte[] rdata = bout.toByteArray();
// System.out.println("leen = " + (rdata.length - 32));
System.out.println(new String(rdata));

fout.write(rdata);
fout.flush();
fout.close();
socket.close();

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

服务器端的

ServerSocket ss = new ServerSocket(8090);
Socket socket=null;
BufferedReader in;
PrintWriter out;

while (true)
{
socket = ss.accept();
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
String line = in.readLine();
out.println("you input is :" + line);
out.close();
in.close();
socket.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: