javaSocket编程TCP
来源:互联网 发布:jsp教务管理系统源码 编辑:程序博客网 时间:2024/05/16 17:05
主题为:javaSocket编程TCP
原地址:http://www.iteye.com/topic/630748
推荐群组: D语言
更多相关推荐
写了一个javaSocket通信的例子,比较容易懂,主要是TCP协议的。下面是服务端的代码
- import java.io.IOException;
- import java.net.InetAddress;
- import java.net.Socket;
- public class ServerSocket {
- public staticvoid main(String[] args) {
- beginSocket();
- }
- public staticvoid beginSocket(){
- try {
- java.net.ServerSocket serverSocket=new java.net.ServerSocket(3456);
- InetAddress inta=serverSocket.getInetAddress().getLocalHost();
- System.out.println(inta.getHostAddress());
- while(true){
- Socket socket=serverSocket.accept();
- new HelloMessage(socket);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
import java.io.IOException;import java.net.InetAddress;import java.net.Socket;public class ServerSocket {public static void main(String[] args) {beginSocket();}public static void beginSocket(){try {java.net.ServerSocket serverSocket=new java.net.ServerSocket(3456);InetAddress inta=serverSocket.getInetAddress().getLocalHost();System.out.println(inta.getHostAddress());while(true){Socket socket=serverSocket.accept();new HelloMessage(socket);}} catch (IOException e) {e.printStackTrace();}}}
为了提高并发时的处理效率,对于每个请求,系统都新建一个线程处理。
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.Socket;
- public class HelloMessageextends Thread {
- private Socket socket_ = null;
- public HelloMessage(Socket socket) {
- this.socket_ = socket;
- this.start();
- }
- public void run() {
- try {
- BufferedReader bReader = new BufferedReader(new InputStreamReader(
- this.socket_.getInputStream()));
- PrintWriter pWriter = new PrintWriter(this.socket_
- .getOutputStream());
- String requestStr = bReader.readLine();
- if (requestStr != null && !"".equals(requestStr)) {
- if (requestStr.equals("java")) {
- pWriter.println("your write is java");
- }
- if (requestStr.equals(".net")) {
- pWriter.println("your write is .net");
- }
- if (requestStr.equals("php")) {
- pWriter.println("your write is php");
- }
- if (requestStr.equals("end")) {
- pWriter.println("your write is end");
- }else{
- pWriter.println("your write is other");
- }
- }else{
- pWriter.println("your write is null");
- }
- pWriter.flush();
- pWriter.close();
- bReader.close();
- this.socket_.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class HelloMessage extends Thread {private Socket socket_ = null;public HelloMessage(Socket socket) {this.socket_ = socket;this.start();}public void run() {try {BufferedReader bReader = new BufferedReader(new InputStreamReader(this.socket_.getInputStream()));PrintWriter pWriter = new PrintWriter(this.socket_.getOutputStream());String requestStr = bReader.readLine();if (requestStr != null && !"".equals(requestStr)) {if (requestStr.equals("java")) {pWriter.println("your write is java");}if (requestStr.equals(".net")) {pWriter.println("your write is .net");}if (requestStr.equals("php")) {pWriter.println("your write is php");}if (requestStr.equals("end")) {pWriter.println("your write is end");}else{pWriter.println("your write is other");}}else{pWriter.println("your write is null");}pWriter.flush();pWriter.close();bReader.close();this.socket_.close();} catch (Exception e) {e.printStackTrace();}}}
然后是客户端的代码。
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.Socket;
- import java.net.UnknownHostException;
- public class ClientSocket {
- public staticvoid main(String[] args) {
- clientRequest();
- }
- private staticvoid clientRequest() {
- try {
- while (true) {
- Socket clientSocket = new Socket("172.168.4.105",3456);
- BufferedReader bReader = new BufferedReader(new InputStreamReader(
- System.in));
- System.out.println("please input java or .net or php or end");
- String strLine = bReader.readLine();
- if (strLine != null && !"".equals(strLine)) {
- PrintWriter pWriter = new PrintWriter(clientSocket
- .getOutputStream(), true);
- pWriter.println(strLine);
- BufferedReader br = new BufferedReader(
- new InputStreamReader(clientSocket.getInputStream()));
- String strResult = br.readLine();
- System.out.println(strResult);
- pWriter.flush();
- pWriter.close();
- clientSocket.close();
- }
- }
- } catch (UnknownHostException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;import java.net.UnknownHostException;public class ClientSocket {public static void main(String[] args) {clientRequest();}private static void clientRequest() {try {while (true) {Socket clientSocket = new Socket("172.168.4.105", 3456);BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));System.out.println("please input java or .net or php or end");String strLine = bReader.readLine();if (strLine != null && !"".equals(strLine)) {PrintWriter pWriter = new PrintWriter(clientSocket.getOutputStream(), true);pWriter.println(strLine);BufferedReader br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));String strResult = br.readLine();System.out.println(strResult);pWriter.flush();pWriter.close();clientSocket.close();}}} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
这样一个简单的TCP,Socket编程的原型就成了。简单介绍下:
几个比较重要的API
.Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。
.getInputStream方法获得网络连接输入,同时返回一个IutputStream对象实例,。
.getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。
- javaSocket编程TCP
- JavaSocket实现TCP编程
- javaSocket TCP框架比较
- JavaSocket编程要点,,
- JavaSocket编程基础
- 两步学会JavaSocket编程
- JavaSocket/ServerSocket编程详解(中文)
- javaSocket
- JavaSocket
- JavaSocket
- 两步学会JavaSocket编程(一)
- 两步学会JavaSocket编程(二)
- JavaSocket编程之Netty框架线程模型
- 使用JavaSocket编写发送TCP请求的工具类
- 使用JavaSocket编写发送TCP请求的工具类
- TCP/UDP简单介绍及JavaSocket的使用
- 使用JavaSocket编写发送TCP请求的工具类
- JavaSocket编程单客户端与多客户端实现
- JQuery Mobile入门——页面缓存
- ubuntu包管理
- C的|、||、&、&&、异或、~、!运算
- 编译android2.3过程中出现问题的解决
- PowerControl升级记录
- javaSocket编程TCP
- java 注释规范
- VC++ 虚函数
- s
- objective-c对象初始化
- cygwin安装ctags
- js火狐以及ie处理鼠标进入与离开事件
- ArcGIS For JavaScript API OpenStreetMap Layer(打开街道地图层)————(九)
- 设置UIView层次