- 浏览: 378302 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
一半水分子:
你好,我想转载您的文章,需要获取您的许可,请您在看到这条评论时 ...
Centos7 卸载ibus无法进入桌面 -
flylynne:
1、 车辆证书,发票和合格证都要齐全,不能听他们说是分开的,因 ...
技术内容 -
josico:
问一下,如果1替换成 M2替换成 N3替换成 O那其实不要这样 ...
SQL replace的使用 -
xiezhiwei0314:
lomboz 目录我也没有看到
Eclipse SDK安装web开发插件 -
xiezhiwei0314:
我安装好tomact插件但是没有看到web那个目录!在网上查了 ...
Eclipse SDK安装web开发插件
和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);
}
}
}
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);
}
}
}
发表评论
-
简单网络爬虫基础功能
2016-11-09 23:25 610package com.common; //http: ... -
java读取文件夹下所有文件并替换文件每一行中指定的字符串
2016-04-26 00:28 1237import java.io.BufferedReader; ... -
Java多线程面试、笔试方向
2015-04-16 09:17 9491.ThreadLocal类 线程级别的局部变量, ... -
单例模式的七种写法
2015-03-06 17:15 745转载请注明出处:http://cantellow.iteye ... -
Java itoa,atoi
2014-10-28 14:49 1622package com.arithmetic; pub ... -
正则表达
2014-10-15 17:25 728Pattern类中的一些 特殊字符。大家可以参考下,以便以 ... -
tomcat_garbage collection_log(垃圾回收日志)参数设置
2014-09-30 15:31 1384@echo off if "%OS%&q ... -
JDK中的URLConnection参数详解
2014-08-12 14:56 625转自:http://www.blogja ... -
java.lang.ClassNotFoundException: org.apache.commons.collections.map.ListOrdered
2014-07-29 10:21 1579java.lang.ClassNotFoundExcept ... -
java Web应用配置log4j日志记录
2014-03-31 07:34 1512仅限学习使用,转自http://www.blogjava. ... -
core java核心面试题
2013-03-17 23:17 1378 -
Java教程 实战JMS
2012-08-20 23:50 7346JMS API JMS源于企业应用 ... -
经典面试题
2012-08-20 23:47 1426public class ThreadMethod { p ... -
某信用卡公司测试项目组笔试题
2012-08-20 18:55 1248/* * 有50个人站成一个圈, * 第一个人开始数数 ... -
lv mama面试题
2012-08-17 19:19 12891.如何优化java代码? 可供程序利用的资源(内存、CPU ... -
lv ma笔试
2012-08-17 12:39 1231redirect and forward的区别? ... -
多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
2012-08-17 00:09 1159public class IncDecThread { p ... -
has a / is a 的区别
2012-08-16 23:06 948如果你确定两件对象之间是is-a的关系,那么此时你应该使 ... -
上海某医疗公司笔试题
2012-08-16 22:12 1210以下父类和子类的运行结果 package com.exampl ... -
连接池的实现和优化(一)
2012-08-15 11:26 1135由于数据库连接,JMS连接是一种较为昂贵的资源,创建连接需 ...
相关推荐
java socket点对点以及点对面编程实例.rar 直接导入MyEclipse就可以运行了
以上就是使用Java Socket编程实现文件上传涉及到的主要知识点,包括Socket通信机制、文件I/O、数据库操作、异常处理、多线程、安全性和性能优化等方面。理解并掌握这些内容,对于开发高效、可靠的文件上传系统至关...
总的来说,这个用Java编写的TCP Socket点对点聊天程序是一个很好的学习资源,涵盖了网络编程基础、并发处理和异常处理等多个重要知识点。通过实际操作,学习者不仅可以掌握TCP通信的原理,还能提高Java编程技巧,为...
在Java编程领域,Socket通信是实现网络间应用进程间通信的一种技术。...通过这样的实践,你将对Java Socket编程有更深入的理解,也能熟练运用CINDY包进行开发。记住,理论与实践相结合是掌握技术的最好方式。
"Java Socket传输图片源代码"这个主题涵盖了以下几个关键知识点: 1. **Java Socket基础**: - Socket是TCP/IP协议族的一部分,用于在网络应用程序之间建立双向通信通道。Java的`java.net.Socket`类和`...
总的来说,这个Java_C-S聊天程序涉及了Socket编程、多线程技术、以及点对点和点对多的通信模式,是学习网络编程和并发处理的一个典型实例。通过研究和实践这个项目,开发者可以深入理解这些概念,并提升在实际应用中...
本教程将深入探讨Java Socket的相关知识点,旨在帮助开发者理解和掌握如何在Java环境中构建网络应用程序。 一、Socket基础 Socket在计算机网络中扮演着桥梁的角色,连接了两个网络进程进行数据传输。Java Socket类...
总结来说,Java Socket聊天程序通过Java的网络编程接口实现了多用户间的点对点通讯,提供了丰富的用户界面,让用户可以方便地进行聊天交流。这样的程序设计不仅涉及网络编程,还涉及到GUI设计、多线程编程以及可能的...
在这个项目“[JavaSE]使用Socket做的点对点聊天雏形”中,我们利用了Java的Swing库来创建用户界面,并通过Socket和ServerSocket类实现了TCP协议下的通信,构建了一个简单的点对点聊天应用。 首先,我们要理解TCP...
通过学习和实践这个Java Socket聊天程序,你可以深入理解网络编程的基本原理,掌握多线程编程,以及如何将这些技术应用于创建用户友好的图形界面。这不仅对提升你的Java编程技能大有裨益,而且对于理解和开发其他...
这篇博客主要探讨了如何使用Java进行Socket编程,包括基本概念、创建Socket连接以及数据的收发。 一、Socket基础 Socket可以理解为应用程序与网络服务的入口点,它为应用层提供了进程间通信(IPC)的能力,使得不同...
在这个"Java socket文件传输实例"中,我们将深入探讨如何使用Java的Socket类进行文件的发送和接收,这对于理解网络编程的基本原理以及在实际应用中构建文件共享系统至关重要。 首先,Java Socket是基于TCP/IP协议的...
在局域网环境中,用户可以通过输入对方的IP地址,实现点对点的聊天。由于局域网内的设备可以互相访问,因此这种通信方式在本地网络中尤为适用。 总结来说,这个Java套接字聊天工具展示了如何利用Java的网络编程API...
Java实现的Socket编程是网络通信中的基础技术,它允许两台或多台计算机通过网络进行数据交换,从而实现应用程序之间的通信。在多人聊天室的场景下,Socket编程扮演着至关重要的角色,它使得用户可以通过网络实时地...
这个"java网络编程实例2"可能详细讲解了上述各个知识点,并通过实例代码引导读者一步步实现网络功能,加深对Java网络编程的理解。通过学习和实践这些内容,开发者可以构建出功能强大的网络应用程序。
总结,Java Socket查询数据库实现登录验证涉及了网络编程、数据库操作以及安全性策略等多个知识点。理解并掌握这些内容对于开发安全、可靠的网络应用至关重要。在实际项目中,还需要注意异常处理、性能优化以及安全...
在"Java网络编程实例"中,可能包含的就是以上知识点的具体代码示例。通过阅读和分析这些实例,开发者可以更好地理解如何在实际项目中应用这些技术。"爱书吧.txt"可能是一份关于网络编程的学习资料,"教程阅读器下载....
Java Socket聊天室是一种基于Java编程语言实现的网络通信应用,主要利用了Socket编程接口来创建客户端和服务器端的连接,从而实现数据的双向传输。在这个系统中,用户可以通过客户端发送消息,服务器端接收到消息后...
以下是对这个Java Socket聊天室项目的详细知识点解析: 1. **Java Socket API**: Java Socket API是Java提供的用于网络通信的低级接口,它允许应用程序创建和维护到其他主机上的进程的双向通信链接。在聊天室项目...
以下是对Java TCP/IP Socket编程的一些关键知识点的详细说明: 1. **TCP/IP协议基础**:TCP/IP协议栈由四层组成,分别是应用层、传输层、网络层和数据链路层。TCP(Transmission Control Protocol)是传输层协议,...