java网络编程:基于TCP的socket编程
来源:互联网 发布:平板电脑可以开淘宝店 编辑:程序博客网 时间:2024/05/17 17:17
服务器程序编写:
①调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上;②调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。③调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。④最后关闭通信套接字。
客户端程序编写:
①调用Socket()创建一个流套接字,并连接到服务器端; ②调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。 ③最后关闭通信套接字。
下面给出多线程的实现:
服务器端:
package socket;import java.net.ServerSocket;import java.net.Socket;public class TCPServer {public static void server() {try {// 创建serversocket,绑定端口 ServerSocket ss=new ServerSocket(6000); while(true) { //accept()函数处于阻塞状态,直到收到客户端的连接 Socket s = ss.accept(); //多线程处理机制,每当收到一个链接,就创建一个新的线程去处理它 new Network(s).start(); } //ss.close(); } catch (Exception ex) { ex.printStackTrace(); } }public static void main(String[] args) {// TODO Auto-generated method stubserver();}}
package socket;import java.io.BufferedOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;public class Network extends Thread {private Socket s; public Network(Socket s) { this.s=s; }public void run() { try { OutputStream os=s.getOutputStream(); //输出流采用缓冲机制 BufferedOutputStream bos=new BufferedOutputStream(os); InputStream is=s.getInputStream(); bos.write("hi,welcome you!".getBytes()); //flush()函数强制缓冲区的内容输出,如果不用此函数,只有当缓冲区满后才输出 bos.flush(); byte[] buf=new byte[100]; int len=is.read(buf); System.out.println(new String(buf,0,len)); os.close(); bos.close(); is.close(); s.close(); } catch (Exception ex) { ex.printStackTrace(); } }}
客户端:
package socket;import java.io.InputStream;import java.io.OutputStream;import java.net.InetAddress;import java.net.Socket;public class TCPClient {public static void client() { try { //客户端创建Socket对象,传入服务器端的地址和端口号 Socket s=new Socket(InetAddress.getByName(null),6000); OutputStream os=s.getOutputStream(); InputStream is=s.getInputStream(); byte[] buf=new byte[100]; int len=is.read(buf); System.out.println(new String(buf,0,len)); os.write("Hi,this is client".getBytes()); os.close(); is.close(); s.close(); } catch (Exception ex) { ex.printStackTrace(); } }public static void main(String[] args) {// TODO Auto-generated method stubclient();}}
0 0
- java网络编程:基于TCP的socket编程
- Java网络编程(基于TCP的socket编程)
- Java网络编程——基于TCP的Socket编程
- 网络编程----基于TCP的socket编程
- Java网络编程:TCP的socket编程
- 基于TCP的socket编程网络掉线重连
- 基于TCP的Socket网络编程
- Java基于TCP的Socket编程练习
- 基于TCP协议的网络编程--socket编程(1)
- 基于TCP协议的网络编程--socket编程(2)
- Socket编程基础--基于TCP协议的网络编程
- 基于TCP/IP协议的网络编程—Socket编程
- java网络编程基础夯实07-基于TCP/UDP的Socket编程(单线程)
- 基于Socket的java网络编程
- 基于Socket的Java网络编程
- 基于Socket的java网络编程
- 基于Socket的java网络编程
- 基于Socket的JAVA网络编程
- 记录Kruscal易错点
- SSO 实现方案探讨
- Android Notification
- 数据结构实验图论:基于邻接矩阵/邻接表的广度优先搜索遍历(BFS)
- linux 下磁盘满问题
- java网络编程:基于TCP的socket编程
- DateFormat setLenient
- 重新开始博客
- TLD文件中的四种标签体类型 (能力工场)
- error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- vim之AutoComplPop和OmniCppComplete的安装和使用
- 如何在QR二维码中插入图片
- 【POJ 3469】 Dual Core CPU --最小割
- 解决 PLS-00306: 调用"存储过程名"时参数个数或类型错误