• 0

[VB.NET] In class we made a simple tictactoe program but how do you use tcp


Question

In class we made a simple tictactoe game in vb.net but I wanna try to go the extra mile and make it playable over the network.... I know alot about tcp/ip like I would need to pick one of the computers to host it with a port a number then one of the programs need to be the client and connect to that server.... I remember teaching myself on how to make a simple chat program in vb6 using the winsock ocx but how would I do it in vb.net?

Recommended Posts

  • 0
http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.aspx#Y0 so how do I use this code? Where do I put it all? I obviously dont put it all in a command button....
  • 0

No, you could start your TcpListener on the OnLoad() method of the main form. That said, if you're just starting out programming, adding TCP/IP multiplayer to your Tic-Tac-Toe is probably beyond your abilities at the moment. You'll need to define a message format, serialize/deserialize your messages through the connection, ensure synchronisation of all clients, handle disconnects and re-connects gracefully etc. It's not trivial.

  • 0

No, you could start your TcpListener on the OnLoad() method of the main form. That said, if you're just starting out programming, adding TCP/IP multiplayer to your Tic-Tac-Toe is probably beyond your abilities at the moment. You'll need to define a message format, serialize/deserialize your messages through the connection, ensure synchronisation of all clients, handle disconnects and re-connects gracefully etc. It's not trivial.

copy and paste it onload and it dont work and the message part is easy just alot of ifs "if client sends "X:1"" Put an x mark on button 1 so on.....

  • 0

copy and paste it onload and it dont work and the message part is easy just alot of ifs "if client sends "X:1"" Put an x mark on button 1 so on.....

How does it not work? What do you expect it to do? Do you have a client as well? A listener is just that, a listener, it listens to incoming connections. You need one instance of your app that acts as the server and one (or multiple others) that act as the client. There's a link to an example TcpClient in that same tutorial page for TcpListener. Read up on tcp connections, how to establish a connection, how to pass messages around, how to close the connection.

"A lot of ifs" is a terrible way of going about this btw. What would you do for a 10x10 tic-tac-toe? Code 100 if-elses? What if you wanted to support multiple different sizes? If you don't know about lists and loops I don't think there's any way you're going to add multiplayer functionality. Start one step at a time.

  • 0

How does it not work? What do you expect it to do? Do you have a client as well? A listener is just that, a listener, it listens to incoming connections. You need one instance of your app that acts as the server and one (or multiple others) that act as the client. There's a link to an example TcpClient in that same tutorial page for TcpListener. Read up on tcp connections, how to establish a connection, how to pass messages around, how to close the connection.

"A lot of ifs" is a terrible way of going about this btw. What would you do for a 10x10 tic-tac-toe? Code 100 if-elses? What if you wanted to support multiple different sizes? If you don't know about lists and loops I don't think there's any way you're going to add multiplayer functionality. Start one step at a time.

The code errors when I try to run it..... I am not stupid when it comes to this stuff i have used winsock before i Know i need a client and a server I took a ccna class all about tcp/ip

  • 0

What isnt an error?

First off, move your "imports" lines above the Public Class Form1 - they need to stay first in the code document.

Then remove the class MyTcpListener, and the public shared main sub - they do not belong inside another Sub/Function/Method.

Next you will figure out that this code has an endless loop that will basicly lock up your program as soon as it starts (it will never stop "loading"). You need to either put this code in a separate thread or use the TcpListener asynchronously (spelling?)

Have a look at http://msdn.microsoft.com/en-us/library/vstudio/system.net.sockets.tcplistener.beginacceptsocket(v=vs.90).aspx#Y0 for examples

  • 0

Your code doesn't compile. It's not valid Visual Basic and Visual Studio should show you some error messages in its output and error windows when you attempt to start the program. These error messages can often tell you what the problems are and how to fix them.

- The Imports directives should go at the top of the file, not inside a class declaration

- Your MyTcpListener class is declared inside the Form1 class, which is illegal - move it after the "End Class" of Form1 or, better, to its own file

- You're declaring a Main() function inside MyTcpListener, but your project is probably a Windows Forms Application, which already has its own Main() function - a .NET program must have only one Main() function.

- The code that goes inside that Main() method should go in the OnLoad() method of the Form1 class, as I explained to you before

Do you even know what is a class, a module, a namespace, what do access modifiers do, how to override a virtual method, what are events, how to register/unregister to them, what's a Shared method vs non-Shared, what is the purpose of the Main() method, etc? Implementing multiplayer will require putting together several pieces which you seem to ignore the very nature of. It's not like you're going to copy-paste the correct code here and there and it's all magically going to work; even if it did, that wouldn't be very useful to you, would it? Start by properly learning Visual Basic and the .NET Base Class Library and then you'll be able to implement advanced functionality like this and understand what you're doing. Learn to walk before you run...

  • 0

thanks everyone and yes it is in an endless loop how do I put it in its own thread?

Put that code in its own method and pass the method as a delegate to a BackgroundWorker. There are many more options for threading in .NET but that's probably the simplest one here.
  • 0

How does it not work? What do you expect it to do? Do you have a client as well? A listener is just that, a listener, it listens to incoming connections. You need one instance of your app that acts as the server and one (or multiple others) that act as the client. There's a link to an example TcpClient in that same tutorial page for TcpListener. Read up on tcp connections, how to establish a connection, how to pass messages around, how to close the connection.

"A lot of ifs" is a terrible way of going about this btw. What would you do for a 10x10 tic-tac-toe? Code 100 if-elses? What if you wanted to support multiple different sizes? If you don't know about lists and loops I don't think there's any way you're going to add multiplayer functionality. Start one step at a time.

Currently I got it working that when I write something in a telnet client and using IFs it will trigger a msgbox depending on what I wrote into the telnet client. You say ifs a terrible way to do it then what is a good way to do it?

  • 0

For instance, if your messages are text messages of the form "1,2" where 1 and 2 are the line and column to play at, you could put all your textboxes in a two-dimensional array, parse the message as two integers, and use these as indexes into the array to obtain the corresponding textbox. No need for any ifs, works with any board size.

  • 0

Thanks! I may try to do it the if way and then try it with your way after

I ran into another problem I can't access any of form1s command buttons from the tcp/ip thread I have tried using form1.label1.text = "connected!!" it doesnt error but it doesnt work either. I googled the problem but none of it was any help

http://stackoverflow.com/questions/5683724/problem-accessing-a-textbox-control-from-another-class-thread-in-vb-net

  • 0

You're not allowed to update the UI from any other thread than the UI thread. Use the Invoke (synchronous) or BeginInvoke (asynchronous) method of the main form to pass UI updates (as delegates) from a background thread.

  • 0

You're not allowed to update the UI from any other thread than the UI thread. Use the Invoke (synchronous) or BeginInvoke (asynchronous) method of the main form to pass UI updates (as delegates) from a background thread.

Is there a sample of that somewhere?

  • 0

Public Shared Sub ticserver()

server = Nothing

Try

CheckForIllegalCrossThreadCalls = False

' Set the TcpListener on port 13000.

Dim port As Int32 = 13000

Dim localAddr As IPAddress = IPAddress.Parse("127.0.0.1")

server = New TcpListener(localAddr, port)

' Start listening for client requests.

server.Start()

' Buffer for reading data

Dim bytes(1024) As Byte

Dim data As String = Nothing

' Enter the listening loop. While True

Console.Write("Waiting for a connection... ")

' Perform a blocking call to accept requests. ' You could also user server.AcceptSocket() here.

client = server.AcceptTcpClient()

Console.WriteLine("Connected!")

Form1.PictureBox1.Show()

Form1.Label1.Text = "A client has connected to you"

Form1.Label1.Show()

data = Nothing

' Get a stream object for reading and writing

stream = client.GetStream()

Dim i As Int32

' Loop to receive all the data sent by the client.

i = stream.Read(bytes, 0, bytes.Length)

While (i <> 0)

' Translate data bytes to a ASCII string.

data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)

Console.WriteLine("Received: {0}", data)

' Process the data sent by the client.

data = data.ToUpper()

Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)

' Send back a response.

stream.Write(msg, 0, msg.Length)

Console.WriteLine("Sent: {0}", data)

i = stream.Read(bytes, 0, bytes.Length)

End While

' Shutdown and end connection

' client.Close()

' Console.WriteLine("SocketException: {0}", e)

Finally

server.Stop()

End Try

Console.WriteLine(ControlChars.Cr + "Hit enter to continue....")

Console.Read()

End Sub 'MainEnd Class'MyTcpListener

according to this http://tech.xster.ne...eads-on-vb-net/ adding the code

Me.CheckForIllegalCrossThreadCalls = False

should make it work but it doesnt..... why does me. always error I remove it and the error is gone but still this code does nothing

"

Form1.PictureBox1.Show()

Form1.Label1.Text = "A client has connected to you"

Form1.Label1.Show()

data = Nothing"

  • 0

Is there a sample of that somewhere?

Of course, googling any of the terms I mentionned will return you hundreds of useful results.

Don't disable checking for illegal cross-thread calls. You're making an illegal cross-thread call, disabling checking won't make it any less illegal.

  • 0

I dont get any of the codes they all use me.whatever and that always causes an error

"Me" is a reference to the current object, for instance if your code is inside your main Form class (like most tutorials assume), then "Me" is a reference to the Form object, which has an Invoke and a BeginInvoke method. Since I suppose you segregated your background thread code to another class, you'll have to pass it a reference to the Form object in order to invoke any methods of the Form from it. Alternatively, you could simply bring that code back to the main Form class and you'd be able to use "Me" to reference to Form then.
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Again, this is an irrelevant attempt to attack the messenger. The truth does not require any justification.
    • Removed the blue and underline as you did not post a link. This would also  be considered spamming.
    • Why it's almost impossible to produce a smartphone in the United States by Hamid Ganji If you look at the back of some Apple products, you can see the famous phrase “Designed by Apple in California, Assembled in China.” This phrase appears on products from one of the largest smartphone brands in the United States. These products are designed in the U.S., but their manufacturing takes place in China, India, Vietnam, or even Brazil. But why can’t Apple, as one of the largest American tech companies, produce its iPhones on U.S. soil? The idea for this topic came to me after the Trump Foundation launched a smartphone called the T1 and claimed that it was designed and built with American values in mind. However, this claim did not last long, as it was revealed that Trump’s phone was actually a rebranded HTC U24 Pro, with only a gold case and minor internal component changes. You see? Even a phone that is supposed to represent American values is manufactured in China. With a gross domestic product (GDP) exceeding $32 trillion, the United States is currently the world’s largest economy, while China ranks second with around $20 trillion. On the other hand, the United States is by a wide margin the global leader in various technological fields, and American companies spend hundreds of billions of dollars annually on research and development. From Apple and Google to Microsoft, Lockheed Martin, Boeing, and others, American tech and industrial giants lead their foreign competitors in many sectors. The United States also has no shortage of smartphone brands. Apple, Google, and Motorola are among the major brands in the smartphone market, collectively holding a significant share. However, the vast majority of their products are manufactured outside the United States. So why is it that the world’s largest economy, home to the most advanced technology companies and industrial powers, cannot produce a smartphone on its own soil? Let’s explore this question together. Even threats to impose tariffs won’t work After Trump entered the White House as the 47th President of the United States, his administration adopted strict tariff policies. One of these policies was the imposition of a 25% tariff on smartphones manufactured outside the United States. Trump said he “had a little problem” with Apple CEO Tim Cook over producing smartphones outside the U.S. So he thought that threatening a 25% tax on imported phones might force Apple to bring manufacturing back to the United States. “I have long ago informed Tim Cook of Apple that I expect their iPhones that will be sold in the United States of America will be manufactured and built in the United States, not India, or anyplace else,” Trump wrote on Truth Social. Image via The White House Although Apple currently manufactures some of the iPhone’s chips in the United States with TSMC's help, it still shows no willingness to shift full iPhone production to the country. At the time, renowned Apple supply chain analyst Ming-Chi Kuo wrote on X, “In terms of profitability, it’s way better for Apple to take the hit of a 25% tariff on iPhones sold in the US market than to move iPhone assembly lines back to the US.” However, manufacturing a smartphone in the United States is not as easy as it might seem, and many technical and economic barriers are involved. The lack of necessary manufacturing hubs There is a clear reason why many companies prefer to manufacture their products in China. China has established itself as the main global manufacturing hub for international companies, and over the past few decades, large contract manufacturers have emerged there, allowing companies like Apple to outsource production. One such example is Foxconn, which also manufactures some Apple products in India. Building the infrastructure required to produce smartphones in the United States would require tens of billions of dollars in new investment. Factories would need to be built, essential manufacturing equipment would have to be installed, and, most importantly, a skilled workforce capable of operating these systems would need to be recruited and trained. The United States currently lacks the core infrastructure needed to manufacture smartphones, and for this reason, many companies prefer to outsource production to Chinese contractors rather than spend tens of billions of dollars to build that infrastructure, which is significantly more economically efficient. Additionally, building such infrastructure in the United States could take up to a decade, ultimately leading to a significant increase in the product's final price for consumers. Shortage of trained labor in the U.S. compared to China Decades of serving as a global manufacturing hub have allowed China to build a massive talent pool in the production sector that is almost unmatched worldwide. Today, if a company chooses to manufacture its products in China, it can be confident that the workers involved in production have years of experience in their respective roles and are capable of producing high-quality goods with minimal errors. Even if we assume that tens of billions of dollars were invested in building smartphone manufacturing infrastructure in the United States, finding skilled workers would remain highly challenging. Apple CEO Tim Cook visiting the iPhone 6 assembly line in China in 2014. Image: Tim Cook on X In a 2015 interview on CBS’s 60 Minutes, Tim Cook said the main reason Apple isn’t producing in the US is a lack of skills. "China put an enormous focus on manufacturing, in what you and I would call vocational kind of skills. The US over time began to stop having as many vocational kinds of skills. I mean you could take every tool and die maker in the United States and probably put them in the room that we're currently sitting in. In China you would have to have multiple football fields,” Cook said. Also, in 2017, at the Fortune Global Forum in Guangzhou, Cook once again emphasized the importance of highly skilled Chinese workers. “China has moved into very advanced manufacturing, so you find in China the intersection of craftsman kind of skill, and sophisticated robotics and the computer science world. That intersection, which is very rare to find anywhere, that kind of skill, is very important to our business because of the precision and quality level that we like. The thing that most people focus on if they’re a foreigner coming to China is the size of the market, and obviously, it’s the biggest market in the world in so many areas. But for us, the number one attraction is the quality of the people,” Apple CEO said. Higher labor costs in the United States Producing almost any product in the United States is more expensive than in many other countries, and one of the main reasons is the higher cost of labor in the U.S. According to the Bureau of Labor Statistics, median weekly earnings of full-time workers in the United States were $1,235 in the first quarter of 2026. Meanwhile, the average annual salary in China's private sector in 2025 was RMB 71,590 (US$9,961). In many parts of the world, the weekly wage of an American worker is equivalent to several months of income. Another important factor to consider is that in the United States, the workforce capable of working on a smartphone assembly line is highly specialized and therefore commands higher-than-average wages. According to an estimate by Bank of America, producing an iPhone in the U.S. is technically possible, but “iPhone cost can increase 25% purely on higher labor cost in the U.S.” However, this 25% increase applies only if final assembly is performed in the United States while components are still sourced from China or elsewhere. In this case, the price of a base iPhone would rise from $799 to around $1,000. But in another scenario, if Apple were to produce the required components for the iPhone within the United States, production costs could increase by more than 90%. Trump’s dream for a “Made in the USA” iPhone might never come true In a free-market capitalist economy, one of the primary responsibilities of any CEO is to maximize profit. Using Apple as an example, Tim Cook’s role is to maximize the company’s profits so that it can fund research and development for new products and invest in areas such as artificial intelligence, while also keeping shareholders satisfied. Therefore, it is entirely understandable that Apple would choose not to bring its manufacturing back to the United States and instead keep production in countries where labor is cheaper, and products can be manufactured at a lower cost, thereby maximizing its profit margins. What is your opinion about manufacturing smartphones in the United States? If you are an American citizen, would you be willing to pay hundreds of dollars more for a smartphone made domestically in the USA? Let us know in the comments.
  • Recent Achievements

    • Conversation Starter
      jessse3334 earned a badge
      Conversation Starter
    • Reacting Well
      JuvenileDelinquent earned a badge
      Reacting Well
    • One Month Later
      Excellence2025 earned a badge
      One Month Later
    • Week One Done
      Excellence2025 earned a badge
      Week One Done
    • Week One Done
      flexorcist earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      506
    2. 2
      +Edouard
      196
    3. 3
      PsYcHoKiLLa
      153
    4. 4
      Steven P.
      72
    5. 5
      FloatingFatMan
      65
  • Tell a friend

    Love Neowin? Tell a friend!