网络编程

package net;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

/**

* Socket网络编程之服务器

* @author gaofuzhi

*/

public class LoginServicer {

public static void main(String[] args) throws IOException {

System.out.println("服务器已启动!");

//创建ServerSocket对象

ServerSocket server = new ServerSocket(8988);

//判断客户端与服务端是否正常连接

Socket socket = server.accept();

//通过Socket对象获得输入输出流

InputStream is = socket.getInputStream();

OutputStream os = socket.getOutputStream();

//字符输入输出流

BufferedReader br = new BufferedReader(new InputStreamReader(is));

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));

String string = null;

StringBuffer sb = new StringBuffer();

while((string = br.readLine())!=null){

sb.append(string);

}

System.out.println("从客户端获取的数据:"+sb.toString());

bw.write("恭喜您访问服务器成功!");

//清除缓存区

bw.flush();

//释放资源

bw.close();

br.close();

os.close();

is.close();

socket.close();

server.close();

//结果如下:

//服务器已启动!

//从客户端获取的数据:用户名为:lily;密码为:123456

}

}


package net;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.Socket;

/**

* Socket网络编程之客户端

* @author gaofuzh

*/

public class LoginClient {

public static void main(String[] args) throws IOException {

System.out.println("客户端已启动!");

//创建Socket对象

Socket socket = new Socket("127.0.0.1", 8988);

//通过Scoket对象获得输出输入流对象

OutputStream os = socket.getOutputStream();

InputStream is = socket.getInputStream();

//字符转换输出输入流

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));

BufferedReader br = new BufferedReader(new InputStreamReader(is));

bw.write("用户名为:lily;密码为:123456");

//清除缓存区

bw.flush();

//关闭Socket输出通道,代表输出结束,不至于双方都进入等待状态

socket.shutdownOutput();

String string = null;

StringBuffer sb = new StringBuffer();

while((string = br.readLine())!= null){

sb.append(string);

}

System.out.println("从服务器获取的数据:"+sb.toString());

br.close();

bw.close();

is.close();

os.close();

socket.close();

//结果如下:

//客户端已启动!

//从服务器获取的数据:恭喜您访问服务器成功!

}

}


Socket网络编程之客户端之升级版(序列化与反序列化)(对象输入输出流)

package net;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.ObjectOutputStream;

import java.io.OutputStream;

import java.net.Socket;

import java.util.Scanner;

/**

* Socket网络编程之客户端之升级版(序列化与反序列化)(对象输入输出流)

* @author gaofuzh

*/

public class LoginClient {

public static void main(String[] args) throws IOException {

System.out.println("客户端已启动!");

Scanner input =  new Scanner(System.in);

System.out.println("请输入用户名:");

String name = input.next();

System.out.println("请输入密码:");

String pwd = input.next();

User user = new User(name,pwd);

//创建Socket对象

Socket socket = new Socket("127.0.0.1", 8988);

//通过Scoket对象获得输出输入流对象

OutputStream os = socket.getOutputStream();

InputStream is = socket.getInputStream();

//创建对象输出流

ObjectOutputStream  ois = new ObjectOutputStream(os);

//字符转换输入流

BufferedReader br = new BufferedReader(new InputStreamReader(is));

ois.writeObject(user);

//清除缓存区

ois.flush();

//关闭Socket输出通道,代表输出结束,不至于双方都进入等待状态

socket.shutdownOutput();

String string = null;

StringBuffer sb = new StringBuffer();

while((string = br.readLine())!= null){

sb.append(string);

}

System.out.println("从服务器获取的数据:"+sb.toString());

br.close();

ois.close();

is.close();

os.close();

socket.close();

input.close();

/*结果如下:

客户端已启动!

请输入用户名:

lily

请输入密码:

123

从服务器获取的数据:恭喜lily访问服务器成功!

*/

}

}


package net;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.ObjectInputStream;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

/**

* Socket网络编程之服务器之升级版(序列化与反序列化)(对象输入输出流)

* @author gaofuzhi

*/

public class LoginServicer {

public static void main(String[] args) throws IOException, ClassNotFoundException {

System.out.println("服务器已启动!");

//创建ServerSocket对象

ServerSocket server = new ServerSocket(8988);

//判断客户端与服务端是否正常连接

Socket socket = server.accept();

//通过Socket对象获得输入输出流

InputStream is = socket.getInputStream();

OutputStream os = socket.getOutputStream();

//字符输入输出流

ObjectInputStream ois = new ObjectInputStream(is);

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));

User user = (User)ois.readObject();

System.out.println("登录名为:"+user.getName()+"  密码为:"+user.getPwd());

bw.write("恭喜"+user.getName()+"访问服务器成功!");

//清除缓存区

bw.flush();

//释放资源

bw.close();

ois.close();

os.close();

is.close();

socket.close();

server.close();

//结果如下:

//服务器已启动!

//登录名为:lily  密码为:123

}

}


package net;

import java.io.Serializable;

public class User implements Serializable{

private static final long serialVersionUID = 1L;

private String name;

private String pwd;

public User() {

super();

}

public User(String name, String pwd) {

super();

this.name = name;

this.pwd = pwd;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPwd() {

return pwd;

}

public void setPwd(String pwd) {

this.pwd = pwd;

}

}

package net;

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketAddress;

import java.util.Scanner;

public class Client {

public static void main(String[] args) throws IOException {

while(true){

Scanner input = new Scanner(System.in);

System.out.print("顾客:");

String message = input.next();

//获取本地地址

InetAddress ia = InetAddress.getLocalHost();

//打包信息到指定地址

//相当于仓库与配送中心

DatagramPacket dp = new DatagramPacket(message.getBytes(), message.getBytes().length,ia,8989);

//DatagramSocket相当于运输车

DatagramSocket ds = new DatagramSocket();

//发送信息

ds.send(dp);

//接收业务员的信息

SocketAddress  sa =  dp.getSocketAddress();

byte[] bytes = new byte[2048];

DatagramPacket dp2 = new DatagramPacket(bytes, bytes.length,sa);

ds.receive(dp2);

String string = new String(dp2.getData(), 0, dp2.getData().length);

System.out.println("业务员:"+string);

//释放资源

ds.close();

}

}

}


package net;

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.SocketAddress;

import java.util.Scanner;

public class Reciver {

public static void main(String[] args) throws IOException {

System.out.println("业务员:欢迎您的咨询!");

while(true){

byte[] bytes = new byte[2048];

DatagramPacket dp = new DatagramPacket(bytes, bytes.length);

DatagramSocket ds = new DatagramSocket(8989);

ds.receive(dp);

String string = new String(dp.getData(), 0, dp.getData().length);

System.out.println("顾客:"+string);

//发送响应信息

Scanner input = new Scanner(System.in);

//System.out.println("请输入咨询信息:");

System.out.print("业务员:");

String message = input.next();

//打包信息

SocketAddress  sa =  dp.getSocketAddress();

DatagramPacket dp2 = new DatagramPacket(message.getBytes(), message.getBytes().length,sa);

//发送信息

ds.send(dp2);

//释放资源

//input.close();

ds.close();

}

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容