我是蒙古人--网络编程

1,java的服务器通过serverSocket建立TCP服务器,利用  Socket  建立TCP 客户端。

2,cmd 调出 dos 命令窗口 ,输入ipconfig /all 来查看机器上所有ip 地址

3,创建(服务器)和(客户端)的代码如下:

package cn.day1;
/*
*服务器
*
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server{
	public static void main(String[] args) throws IOException {
		 //创建监听socked
		 ServerSocket server=new ServerSocket(50000);
		 System.out.println("服务端");
		 //创建通讯socket
		 Socket socket = server.accept();
	         //用输入流接收客户端请求
                 getInputStream stream= socket.getInputStream();
		 int date;
                 byte[] by=new byte[1024];
                 while((date=stream.read(by))!=-1){
                           String temp=new String(by,0,date);
                           System.out.println(temp);
                 }
                 stream.close();
	}

}

  

package cn.day1;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
/*
 * 客户端
 */
public class sock {

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

		Socket so=new Socket("192.168.15.117",50000);
		//用输出流输出客户端请求
		OutputStream stream = so.getOutputStream();
		String name="娜娜";
		stream.write(name.getBytes());
		stream.close();
	}

}

4,要想多个客户端给一个服务器发信息,那么我们用到(线程)以及(死循环)。

代码如下:

package cn.day1;
/*
 * 建立线程
 */
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;

public class Tread extends Thread{
	Socket socket=null;

	@Override
	public void run() {
		while(true){
			InputStream stream = null;
			try {
				stream = socket.getInputStream();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			byte[] bytes=new byte[1024];
			int dex;
			try {
				while((dex=stream.read(bytes))!=-1){
					//数据在二进制数组里头,转换成字符串类型
					String temp=new String(bytes,0,dex);
					System.out.println(temp);
}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

	}
	}
}

package cn.day1;
/*
 * 使用无限循环接收 多个客户端 请求
 */
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class X {
	public static void main(String[] args) throws IOException {
		//z创建监听socked
		ServerSocket server=new ServerSocket(50000);
		System.out.println("服务端");
		//创建通讯socket
		while(true){
		Socket socket = server.accept();
		Tread t1=new Tread();
		t1.socket=socket;
		t1.start();
		}

	}
}

 5,服务器接收客户端请求以后反馈给客户端的代码如下:

package cn.day1;

	/*
	*服务器
	*
	*/
	import java.io.IOException;
	import java.io.InputStream;
	import java.io.OutputStream;
	import java.net.ServerSocket;
	import java.net.Socket;
	public class Server {

		public static void main(String[] args) throws IOException {
			 //创建监听socked
			 ServerSocket server=new ServerSocket(50000);
			 System.out.println("服务端");
			 //创建通讯socket
			 Socket socket = server.accept();

		         //用输入流接收客户端请求
	         InputStream stream= socket.getInputStream();
			 int date;
	         byte[] by=new byte[1024];
	         while((date=stream.read(by))!=-1){
	              String temp=new String(by,0,date);
	              System.out.println(temp);
	         }
	         socket.shutdownInput();
	         //服务器给客户端一个相应
	         //打开输出流,发送数据
	         OutputStream os = socket.getOutputStream();
	         String name="我是服务器,客户端登录成功";
	         os.write(name.getBytes());

	         os.close();
	         stream.close();
		}

	}

package cn.day1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
	/*
	 * 客户端
	 */
	public class Socket {

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

			Socket so=new Socket("192.168.15.117",50000);
			//用输出流输出客户端请求
			OutputStream stream = so.getOutputStream();
			String name="娜娜";
			stream.write(name.getBytes());
			so.shutdownOutput();
			//服务器接收客户端反馈
			InputStream is = so.getInputStream();
			BufferedReader br=new BufferedReader(new InputStreamReader(is));
		    name="";
		    while((name=br.readLine())!=null){
		    	System.out.println(name);
		    }

			is.close();

			stream.close();
		}

	}

  注意:用完一次服务器或客户端我们该关闭它们。

列如:

so.shutdownOutput();
时间: 2024-08-24 14:55:51

我是蒙古人--网络编程的相关文章

Linux网络编程(多人在线聊天系统)

一.首先是服务器的建立 首先是一个信号终止程序,发信号ctrl+c终止程序,而是是初始化网络通信. 创建一个描述符负责绑定服务器和监听服务器接收客户端的消息. socket()->sockaddr_in->bind->listen(准备就绪) 开始接收客户端消息.start()函数 首先是声明一个结构体用来存储客户端的消息,利用accept()函数来创建一个新的 描述符来接收,这里有阻塞效果,也即是说连接的时候只能一个一个的连. 然后是分离线程处理这个sockfd的连接. pthread

网络编程懒人入门(六):史上最通俗的集线器、交换机、路由器功能原理入门

1.前言 即时通讯网整理了大量的网络编程类基础文章和资料,包括<TCP/IP协议 卷1>.<[通俗易懂]深入理解TCP协议>系列.<网络编程懒人入门>系列.<不为人知的网络编程>系列.<P2P技术详解>系列.<高性能网络编程>系列.甚至还有图文并貌+实战代码的<NIO框架入门>等,目的是帮助即时通讯类应用的开发者,至少要掌握网络编程最基本的原理,所谓知其然更要知其所以然.尤其现在移动网络大行其道的时代,在网络环境如此复杂的

网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?

1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步发布于:http://www.52im.net/thread-2067-1-1.html) 2.关于作者 翟志军,个人博客地址:https://showme.codes/,Github:https://github.com/zacker330.感谢作者的原创分享. 作者的另一篇<即时通讯安全篇(七)

python网络编程socket (一)

提起网络编程,不同于web编程,它主要是C/S架构,也就是服务器.客户端结构的.对于初学者而言,最需要理解的不是网络的概念,而是python对于网络编程都提供了些什么模块和功能.不同于计算机发展的初级阶段,程序员走到今天,已经脱离了手工打造一切,要自己实现所有细节的年代.现在提倡的是不要重复造轮子,而是学习别人的轮子怎么用,只有那些有需求或能专研的人才去设计轮子甚至汽车,so,这是一个速成的年代. 因此,对于一个面向工作的python程序员,学习python的网络编程,其实学的就是那么几个模块,

cocos2d-x网络编程 连接php服务器笔记1

学习cocos2d-x网络编程是一个非常尴尬的问题,因为熟悉cocos2d-x的学习者基本在游戏开发一块属于客户端编程,想自学网络编程必不可少的牵扯到服务器这块.但是问题是,谁会呢?离开服务器,那搞网络编程无疑就是海市蜃楼镜花水月.官网示例虽然有http短连接和socket长连接的例子但反正我看了之后不知所以,不明白怎么把它用在实际问题中.网上教程也大都是泛泛而谈,不是一些人尽皆知的大道理就是部分不能运行的源码,根本就没有从零教你怎么实现的文章.手游服务器用的技术我们不大可能很了解,据说长连接的

C# 网络编程之豆瓣OAuth2.0认证详解和遇到的各种问题及解决

        最近在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同时自己需要一个个的尝试与解决,最终完成了豆瓣API的访问.作者这里就不再吐槽豆瓣的认证文档了,毕竟人家也不容易.但是作者发现关于豆瓣OAuth认证过程的文章非常之少,所以想详细写这样一篇文章方便后面要做同样东西的人阅读.希望文章对大家有所帮助,尤其是想做豆瓣API开发的初学者. (文章中蓝色字表示官方文档引用,红色字是可能遇到问题及注意,黑色字是作者叙述) 一.误区OAuth1.0认证过程    

完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三

手把手叫你玩转网络编程系列之三    完毕port(Completion Port)具体解释                                                              ----- By PiggyXP(小猪) 前 言 本系列里完毕port的代码在两年前就已经写好了,可是因为许久没有写东西了,不知该怎样提笔,所以这篇文档总是在酝酿之中--酝酿了两年之后,最终决定開始动笔了,但愿还不算晚-.. 这篇文档我很具体而且图文并茂的介绍了关于网络编程模型中完毕

[JAVA &#183; 初级]:22.网络编程

基本概念 计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件.软件.数据信息等资源. 计算机网络的主要功能: 资源共享: 信息传输与集中处理: 均衡负荷与分布处理: 综合信息服务 (www/综合业务数字网络 ISDN). 网络通信协议:计算机网络中实现通信必须有一些约定即通信协议,对速率.传输代码.代码结构.传输控制步骤.出错控制等制定标准. 网络通信接口:为了使两个结点之间能进行对话,必须在它

Linux网络编程入门 (转载)

http://www.cnblogs.com/RascallySnake/archive/2012/01/04/2312564.html (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件