热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于Socket

1.新建一个ServerSocket的对象,并为他绑定一个端口ServerSocketservernewServerSocket();server.bind(newInetSock

1.新建一个ServerSocket的对象,并为他绑定一个端口
ServerSocket server = new ServerSocket();
server.bind(new InetSocketAddress("IP地址",端口)),也可以不设置IP地址,只监听某个端口
(new一个InetSocketAddress对象为他设置端口,然后为他设置一个端口,例如8888,并将InetSocketAddress对象传给QQSocket对象作为接口)
2.server.accept()方法可以拿到一个Socket对象,Socket这个对象可以获得输入流。
3.Socket的对象可以输出数据到特定的端口,但是server.accept获得的对象无法使用再去绑定一个端口或IP。
(Socket socket = new Socket(); socket.connect(new InetSocketAddress(IP,端口))去获得连接,
再使用socket.getOutputStream()方法输出想要的数据到刚刚设置的地址。

package study01;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
public class QQThread extends Thread {
int a = 100;
@Override
public void run() {
while (true){
if (post()){
break;
}
}
}
private boolean post(){
Socket socket = null;
OutputStream os = null;
try {
socket = new Socket();
Thread.sleep(100);
socket.connect(new InetSocketAddress("localhost",8848));
os = socket.getOutputStream();//设置输出流
String s = "Hello Server"+(100-(--a));
os.write(s.getBytes());//
os.flush();
os.close();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
} finally {
if (os!=null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket!=null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return a == 0;
}
}
}

package study01;
import java.io.IOException;
import java.io.InputStream;
import java.net.*;
public class QQ {
public static void main(String[] args) {
QQThread thread = new QQThread();
thread.start();
QQServer(thread.a);
}
private static void QQServer(int a) {
ServerSocket server = null;//ServerSocket用于监听某个端口或者某个IP的端口
Socket socket = null;//Socket用于对流的处理
InputStream is = null;
try {
server = new ServerSocket();
//设置监听的端口和IP
server.bind(new InetSocketAddress(8848));
while (a>0){
//等待端口的数据,如果没有就会一直在这等待
socket = server.accept();
//获取端口的数据的输入流
is = socket.getInputStream();
byte[] bytes = new byte[1024];
int len;
// System.out.println(is.available());//0
while ((len = is.read(bytes))>0){//这里用available方法拿不到byte数组的值,是因为网络分段传输的问题
System.out.println(new String(bytes,0,len));
}
a--;
// System.out.println(is);
}
} catch (IOException e) {
e.printStackTrace();
}finally{//关闭各种连接
if (is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket!=null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (server!=null){
try {
server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

 



推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • importjava.util.ArrayList;publicclassPageIndex{privateintpageSize;每页要显示的行privateintpageNum ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
author-avatar
萱璇妍幽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有