`
wanjianfei
  • 浏览: 321309 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java socket点对点以及点对面编程实例

阅读更多
java socket点对点以及点对面编程实例
和socket编程有关的几个类:
InetAddress
Socket:用在客户端
ServerSocket:用在服务器端
一。点对点通信
服务器端:
package server;


import java.io.*;
import java.net.*;

public class Server {
private int port;
public Server(int port){
this.port=port;
start();
}
//将从客户端收到的信息转化为大写的
public String process(String line){
return line.toUpperCase();
}
public void start(){
try{
//根据端口创建套接字
ServerSocket myscoket=new ServerSocket(port);
//显示连接信息
System.out.println("服务器启动完成,监听端口在"+port);
System.out.println("正在等待客户连接.........");
//挂起等待客户的请求
Socket connection=myscoket.accept();
//测试
System.out.println("客户发来连接请求.........");
//获取读取客户端的数据流
BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));
//获取写往客户端的数据输出流,true表示自动刷新
PrintWriter out=new PrintWriter(connection.getOutputStream(),true);
//向客户发送欢迎的信息
out.println("您好,服务器连接成功!");
out.println("输入bye断开与服务器的连接");
boolean done=false;
while(!done){
//读取客户端的内容
String line=in.readLine();
if(line==null){
done=true;
}else{
//从服务器端显示客户端发送的信息
System.out.println("从客户端来的内容"+line);
//信息处理
String message=process(line);
//向客户端发送信息
out.println("从服务器端口发送的信息"+message);
if(line.trim().equals("BYE"))
done=true;
}
}
//关闭通信
connection.close();
}catch(Exception e){
System.out.println(e);
}
}
}

package server;

public class ServerDemo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
if(args.length!=1){
System.out.println("运行方式:java Server <端口号>");
return;
}
try{
//获得端口号
int port=Integer.parseInt(args[0]);
Server myserver=new Server(port);
}catch(Exception e){
System.out.println(e);
}
}

}

客户端:
package client;
import java.io.*;
import java.net.*;
public class Client {
private String host;
private int port;
public Client(String host,int port){
this.host=host;
this.port=port;
connect();
}
public void connect(){
try{
Socket connection;
if(host.equals("localhost"))
{connection=new Socket(InetAddress.getLocalHost(),port);}
else
{ connection=new Socket(InetAddress.getByName(host),port);}
//获得从键盘输入流
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
//获得服务器写内容的数据流
PrintWriter out=new PrintWriter(connection.getOutputStream(),true);
//获得接收服务器发送内容的输入流
BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));
//从服务器获得欢迎信息
System.out.println("服务器信息:"+in.readLine());
System.out.println("服务器信息:"+in.readLine());
//提示用户输入
System.out.print("请输入>");
boolean done=false;
while(!done){
//从键盘上读取字符
String line=stdin.readLine();
//发送到服务端
out.println(line);
//如果读到bye则结束循环
if(line.equalsIgnoreCase("bye"))
done=true;
//从服务器读取字符串
String info=in.readLine();
//显示从服务器发送来的数据
System.out.println("服务器信息:"+info);
//提示用户输入
if(!done)
System.out.print("请输入>");
}
//关闭
connection.close();
}catch(SecurityException e){
System.out.println("连接服务器出现安全问题!");
}catch(IOException e){
System.out.println("连接服务器出现I/O错误!");
}
}
}

package client;

public class ClientDemo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
if(args.length!=2){
System.out.println("程序运行方式:java client <服务器名称><端口号>");
return;
}
String host=args[0];
try{
int port=Integer.parseInt(args[1]);
Client myserver=new Client(host,port);
}catch(Exception e){
System.out.println(e);
}
}

}
二。点对面通信
服务端:
package server;

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

public class Server extends ServerSocket {
private int port;
//private Socket connection;
public Server(int port)throws IOException{
super(port);
this.port=port;
System.out.println("服务器启动完成,监听端口在"+port);
System.out.println("正在等待客户连接.....");
try{
while(true){
//挂起,直到客户请求
Socket connection=accept();
//建立服务线程
new ServerThread(connection,port);
}
}catch(IOException e){
System.out.println(e);
}finally{
close();
}
}
}
package server;


import java.io.*;
import java.net.*;

public class ServerThread extends Thread{
private int port;
private Socket connection;
private BufferedReader in;
private PrintWriter out;
public ServerThread(Socket s,int port)throws IOException{
this.port=port;
this.connection=s;
//获取读取客户端的数据流
in=new BufferedReader(new InputStreamReader(connection.getInputStream

(),"gb2312"));
//获取写往客户端的数据输出流,true表示自动刷新
out=new PrintWriter(connection.getOutputStream(),true);
//向客户发送欢迎的信息
out.println("您好,服务器连接成功!");
out.println("输入bye断开与服务器的连接");
//启动线程
start();
}
//将从客户端收到的信息转化为大写的
public String process(String line){
return line.toUpperCase();
}
public void run(){
try{
boolean done=false;
while(!done){
String line=in.readLine();
if(line==null)
done=true;
else{
if(line.trim().equals("bye"))
done=true;
System.out.println("从客户端来的内容"+line);
String message=process(line);
out.println("从服务器端口发出的内容"+message);


}
}
System.out.println("bye bye!");
//关闭通信
connection.close();
}catch(Exception e){
System.out.println(e);
}
}
}
package server;

public class ServerDemo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
if(args.length!=1){
System.out.println("运行方式:java Server <端口号>");
return;
}
try{
//获得端口号
int port=Integer.parseInt(args[0]);
Server myserver=new Server(port);
}catch(Exception e){
System.out.println(e);
}
}

}
客户端:
package client;
import java.io.*;
import java.net.*;
public class Client {
private String host;
private int port;
public Client(String host,int port){
this.host=host;
this.port=port;
connect();
}
public void connect(){
try{
Socket connection;
if(host.equals("localhost"))
connection=new Socket(InetAddress.getLocalHost(),port);
else
connection=new Socket(InetAddress.getByName(host),port);
//获得从键盘输入流
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
//获得服务器写内容的数据流
PrintWriter out=new PrintWriter(connection.getOutputStream(),true);
//获得接收服务器发送内容的输入流
BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));
//从服务器获得欢迎信息
System.out.println("服务器信息:"+in.readLine());
System.out.println("服务器信息:"+in.readLine());
//提示用户输入
System.out.print("请输入>");
boolean done=false;
while(!done){
//从键盘上读取字符
String line=stdin.readLine();
//发送到服务端
out.println(line);
//如果读到bye则结束循环
if(line.equalsIgnoreCase("bye"))
done=true;
//从服务器读取字符串
String info=in.readLine();
//显示从服务器发送来的数据
System.out.println("服务器信息:"+info);
//提示用户输入
if(!done)
System.out.print("请输入>");
}
//关闭
connection.close();
}catch(SecurityException e){
System.out.println("连接服务器出现安全问题!");
}catch(IOException e){
System.out.println("连接服务器出现I/O错误!");
}
}
}
package client;

public class ClientDemo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
if(args.length!=2){
System.out.println("程序运行方式:java client <服务器名称><端口号>");
return;
}
String host=args[0];
try{
int port=Integer.parseInt(args[1]);
Client myserver=new Client(host,port);
}catch(Exception e){
System.out.println(e);
}
}

}
分享到:
评论

相关推荐

    java socket点对点以及点对面编程实例.rar

    java socket点对点以及点对面编程实例.rar 直接导入MyEclipse就可以运行了

    JAVA Socket编程实现文件上传

    以上就是使用Java Socket编程实现文件上传涉及到的主要知识点,包括Socket通信机制、文件I/O、数据库操作、异常处理、多线程、安全性和性能优化等方面。理解并掌握这些内容,对于开发高效、可靠的文件上传系统至关...

    用JAVA写的socket点对点聊天程序

    总的来说,这个用Java编写的TCP Socket点对点聊天程序是一个很好的学习资源,涵盖了网络编程基础、并发处理和异常处理等多个重要知识点。通过实际操作,学习者不仅可以掌握TCP通信的原理,还能提高Java编程技巧,为...

    JAVA SOCKET 编码实例

    在Java编程领域,Socket通信是实现网络间应用进程间通信的一种技术。...通过这样的实践,你将对Java Socket编程有更深入的理解,也能熟练运用CINDY包进行开发。记住,理论与实践相结合是掌握技术的最好方式。

    Java Socket传输图片源代码

    "Java Socket传输图片源代码"这个主题涵盖了以下几个关键知识点: 1. **Java Socket基础**: - Socket是TCP/IP协议族的一部分,用于在网络应用程序之间建立双向通信通道。Java的`java.net.Socket`类和`...

    JAVA_C- S聊天程序 Socket 多线程 点对点 点对多

    总的来说,这个Java_C-S聊天程序涉及了Socket编程、多线程技术、以及点对点和点对多的通信模式,是学习网络编程和并发处理的一个典型实例。通过研究和实践这个项目,开发者可以深入理解这些概念,并提升在实际应用中...

    java socket 中文教程

    本教程将深入探讨Java Socket的相关知识点,旨在帮助开发者理解和掌握如何在Java环境中构建网络应用程序。 一、Socket基础 Socket在计算机网络中扮演着桥梁的角色,连接了两个网络进程进行数据传输。Java Socket类...

    java socket聊天程序,有界面

    总结来说,Java Socket聊天程序通过Java的网络编程接口实现了多用户间的点对点通讯,提供了丰富的用户界面,让用户可以方便地进行聊天交流。这样的程序设计不仅涉及网络编程,还涉及到GUI设计、多线程编程以及可能的...

    [JavaSE]使用Socket做的点对点聊天雏形

    在这个项目“[JavaSE]使用Socket做的点对点聊天雏形”中,我们利用了Java的Swing库来创建用户界面,并通过Socket和ServerSocket类实现了TCP协议下的通信,构建了一个简单的点对点聊天应用。 首先,我们要理解TCP...

    Java socket聊天程序 有界面

    通过学习和实践这个Java Socket聊天程序,你可以深入理解网络编程的基本原理,掌握多线程编程,以及如何将这些技术应用于创建用户友好的图形界面。这不仅对提升你的Java编程技能大有裨益,而且对于理解和开发其他...

    学习Java Socket编程

    这篇博客主要探讨了如何使用Java进行Socket编程,包括基本概念、创建Socket连接以及数据的收发。 一、Socket基础 Socket可以理解为应用程序与网络服务的入口点,它为应用层提供了进程间通信(IPC)的能力,使得不同...

    Java socket文件传输实例

    在这个"Java socket文件传输实例"中,我们将深入探讨如何使用Java的Socket类进行文件的发送和接收,这对于理解网络编程的基本原理以及在实际应用中构建文件共享系统至关重要。 首先,Java Socket是基于TCP/IP协议的...

    Java 套接字(Socket)实现的简单局域网点对点聊天工具

    在局域网环境中,用户可以通过输入对方的IP地址,实现点对点的聊天。由于局域网内的设备可以互相访问,因此这种通信方式在本地网络中尤为适用。 总结来说,这个Java套接字聊天工具展示了如何利用Java的网络编程API...

    java实现socket编程网络通信多人聊天室

    Java实现的Socket编程是网络通信中的基础技术,它允许两台或多台计算机通过网络进行数据交换,从而实现应用程序之间的通信。在多人聊天室的场景下,Socket编程扮演着至关重要的角色,它使得用户可以通过网络实时地...

    java网络编程实例2

    这个"java网络编程实例2"可能详细讲解了上述各个知识点,并通过实例代码引导读者一步步实现网络功能,加深对Java网络编程的理解。通过学习和实践这些内容,开发者可以构建出功能强大的网络应用程序。

    java socket查询数据库实现登录验证

    总结,Java Socket查询数据库实现登录验证涉及了网络编程、数据库操作以及安全性策略等多个知识点。理解并掌握这些内容对于开发安全、可靠的网络应用至关重要。在实际项目中,还需要注意异常处理、性能优化以及安全...

    java网络编程实例.rar

    在"Java网络编程实例"中,可能包含的就是以上知识点的具体代码示例。通过阅读和分析这些实例,开发者可以更好地理解如何在实际项目中应用这些技术。"爱书吧.txt"可能是一份关于网络编程的学习资料,"教程阅读器下载....

    java socket聊天室

    Java Socket聊天室是一种基于Java编程语言实现的网络通信应用,主要利用了Socket编程接口来创建客户端和服务器端的连接,从而实现数据的双向传输。在这个系统中,用户可以通过客户端发送消息,服务器端接收到消息后...

    java socket 聊天室

    以下是对这个Java Socket聊天室项目的详细知识点解析: 1. **Java Socket API**: Java Socket API是Java提供的用于网络通信的低级接口,它允许应用程序创建和维护到其他主机上的进程的双向通信链接。在聊天室项目...

    Java_TCP_IP_Socket编程(原书第2版)

    以下是对Java TCP/IP Socket编程的一些关键知识点的详细说明: 1. **TCP/IP协议基础**:TCP/IP协议栈由四层组成,分别是应用层、传输层、网络层和数据链路层。TCP(Transmission Control Protocol)是传输层协议,...

Global site tag (gtag.js) - Google Analytics