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

java socket编程

2013-06-02 18:21 274 查看
这里需要两个类:socket服务器端,socket客户端

package com;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Inet4Address;
import java.net.Socket;

public class SocketClient {

public static void main(String[] args) {

try {
//向socket服务器发送请求,哲理socket服务器所在机器为本机,端口是8899
Socket server = new Socket(Inet4Address.getLocalHost(),8899);
//由Socket对象得到输入流,并构造相应的BufferedReader对象
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
//由Socket对象得到输出流,并构造PrintWriter对象
PrintWriter out = new PrintWriter(server.getOutputStream());
//获得系统表中输入流
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));

while(true){
//从控制台读取输入信息
String str = wt.readLine();
out.println(str);//向服务器端发送消息
out.flush();
if(str.equals("end"))break;
//将服务器端返回的消息打印出来
System.out.println(in.readLine());
}
server.close();

} catch (IOException e) {
e.printStackTrace();
}

}
}


 

package com;

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

public class SocketServer {

/**
* @param args
*/
public static void main(String[] args) {

try {
ServerSocket server = new ServerSocket(8899);//创建一个端口为8899(1024以上随便输,但是不要与该机器已有端口冲突)的socket服务器
Socket client = server.accept();//使用accept()阻塞等待客户请求,有客户请求到来则产生一个Socket对象,并继续执行
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
while(true){
String str = in.readLine();//从客户端读取数据
out.println("server-->"+str);//项客户度啊发送数据
out.flush();
if(str.equals("end"))break;
}
client.close();

} catch (IOException e) {
e.printStackTrace();
}
}

}


 实战经验:

 以上只是适用于一个客户端对一个服务器,不能实现多客户端并发请求。在实际应用中,一般服务器端会采取多线程设计,当客户端请求来时变创建一个线程来处理相应请求

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  socket java