Socket编程

Socket

 概念:是连接运行在网络上的两个程序间的双向通讯的端点

   C/S  客户机/服务器  

 B/S   浏览器/服务器

基于TCP的Socket编程

 创建TCP服务端步骤

  1.   创建一个ServerSocket对象
  2.   调用accept()方法接受客户端请求
  3.   从Socket中获取I/O流
  4.   对I/O流进行读写操作,完成与客户端的交互
  5.   关闭I/O流和Socket

创建TCP客户步骤

  1.   创建一个Socket对象
  2.   从Socket中获取I/O流
  3.   对I/O流进行读写操作,完成与服务端的交互
  4.   关闭I/O流和Socket
package com.tanlei.Socket;

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

public class TcpServer {
  public static void main(String[] args) throws IOException {
	//1,创建一个ServerSocket对象
	  ServerSocket s1=new ServerSocket(8888);
	//2.调用accept()方法接受客户端请求
	  Socket socket=s1.accept();
	  System.out.println(socket.getInetAddress()+"连接成功");
	//获取Socket对象的输入输出流
	  BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
	  BufferedWriter bw=new BufferedWriter(new  OutputStreamWriter(socket.getOutputStream()));
	  
	  String line=null;
	  //读取客户端传过来的数据
	   while((line=br.readLine())!=null) {
		    if(line.equals("over")) {
		    	break;
		    }
		    System.out.println(line);
		    bw.write(line.toUpperCase());//把转换成大写的字符串传给客户端
		    bw.newLine();//换行
		    bw.flush();
	   }
	   bw.close();
	   br.close();
	   socket.close();
	   
	   System.out.println(socket.getInetAddress()+"断开连接");
	  
}
}
package com.tanlei.Socket;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;


public class TcpClient {
  public static void main(String[] args) throws IOException {
	 //1.创建一个Socket对象 
	 Socket socket=new Socket("127.0.0.1", 8888);
	 BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
	 BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
	 BufferedReader br1=new BufferedReader(new InputStreamReader(socket.getInputStream()));
	 while(true) {
		 String line=br.readLine();//获取键盘所输入的字符串
		 bw.write(line);
		 bw.newLine();//换行
		 bw.flush();
		 if (line.equals("over")) {
			break;
		}
		 System.out.println(br.readLine());//获取服务端传来的大小字符串
	 }
	 br1.close();
	 br.close();
	 bw.close();
	 socket.close();
	 
	 
}
}

基于UDP的Socket编程

.........................................

原文地址:https://www.cnblogs.com/tanlei-sxs/p/10035842.html